Você pode usar o seguinte arquivo de unidade como modelo:
[Unit]
Description=A Test Service That Prints the date
After=network.target
[Service]
EnvironmentFile=-/etc/sysconfig/myservice
ExecStart=/usr/bin/bash -c "/usr/bin/date >> /now.txt" $MYSERVICE_ARGS
[Install]
WantedBy=multi-user.target
Salve em /etc/systemd/system/
com uma extensão de arquivo .service
(por exemplo /etc/systemd/system/myservice.service
)
Todas as variáveis de ambiente que são necessárias para o seu aplicativo podem ser colocadas em /etc/sysconfig/myservice
, incluindo a criação de uma variável para manter suas opções de linha de comando:
MYSERVICE_ARGS=--posix
(Se você usar uma variável para as opções de linha de comando, adicione a variável ao seu comando em ExecStart
da seguinte forma: ExecStart=/usr/local/bin/myservice $MYSERVICE_ARGS
)
Teste com:
# systemctl start myservice
Agora você deve ter um arquivo /now.txt
que tenha a data / hora anexada toda vez que isso for executado.
Ativar para iniciar na inicialização com:
# systemctl enable myservice
Agora, ele deve iniciar automaticamente depois que a rede aparecer.
Altere a linha ExecStart
para executar seu aplicativo. Lembre-se que systemd
não executa ExecStart
em uma shell, portanto, se você precisar de redirecionamento, por exemplo, será necessário executar bash -c
conforme o exemplo. Além disso, não haverá uma variável $PATH
, portanto, use caminhos completos. O aplicativo será executado como usuário root
.
Existem muito mais opções que você pode usar - leia a página de manual . Além disso, navegue pelos arquivos da unidade do seu sistema em /usr/lib/systemd/system
.