Erro no Systemd: o caminho executável não é absoluto

0

Eu tenho o seguinte código abaixo de systemd.

[Unit]
Description=start RCC logger server process
Requires=rcc-drbd.service rcc_check_locked_scr.service s96rcc.service
After=rcc-drbd.service rcc_check_locked_scr.service s96rcc.service

[Service]
ExecStart= exec /var/RCC/RCClogger.sh
Restart=no

[Install]
WantedBy=multi-user.target

onde eu tento executá-lo, recebo o erro abaixo.

Mar 23 04:45:52 localhost.localdomain systemd[1]: 
[/etc/systemd/system/rcc_logger.service:7] Executable path is not absolute, 
ignoring: exec /v...ogger.sh
Mar 23 04:45:52 localhost.localdomain systemd[1]: rcc_logger.service lacks 
both ExecStart= and ExecStop= setting. Refusing.

Eu sei que é por causa de nenhum caminho absoluto do comando exec, mas desde exec não está disponível como binário não posso usar o caminho absoluto para isso. Como executar este ExecStart?

    
por Prashanth CM 07.08.2017 / 15:49

2 respostas

1

Você não pode usar exec em uma configuração de unidade de serviço systemd.% exec é um shell embutido e não pode ser chamado diretamente do sistema de arquivos (ele não reside no sistema de arquivos) - type exec e whereis exec mostrarão isso para você.
Use a casca na qual eles estão escritos.

Por exemplo, se for um script bash , você pode executar o script assim:

bash /var/RCC/RCClogger.sh

Agora, bash é um executável e tem um caminho absoluto: /bin/bash . Seu ExecStart será semelhante ao seguinte:

ExecStart=/bin/bash /var/RCC/RCClogger.sh

Outra maneira é simplesmente adicionar uma shebang ao início do script:

#!/bin/bash
... script code ...

Isso informa ao sistema operacional para executar o arquivo com o intérprete especificado, /bin/bash neste caso.

Depois disso, basta tornar seu script executável:

chmod +x /var/RCC/RCClogger.sh

E use diretamente como ExecStart :

ExecStart=/var/RCC/RCClogger.sh
    
por 14.09.2018 / 14:08
0

O "EXecStart=" precisa de um caminho absoluto para iniciar o serviço. Obtenha o caminho completo para o seu arquivo .sh e anexe-o à declaração ExecStart.

Novamente, "manpage" fornecerá informações detalhadas.

    
por 12.10.2017 / 02:34