Estou tentando carregar um script na inicialização do Ubuntu Server 18.04. Meu .service
script está instalado /etc/systemd/system
e posso executar:
service my-service start
e:
service my-service stop
Mas quando tento rodar na inicialização (o que de acordo com a web devo fazer) com:
service my-service enable
o sistema responde com:
my-service: unrecognised service
Pesquisar na web apenas me diz como fazê-lo em versões mais antigas do Ubuntu que não se aplicam ao 18.04 e não consigo determinar a terminologia correta para encontrar a resposta.
O roteiro:
# filename: /etc/systemd/system/my-service.service
[Unit]
Description=My Service
After=network.target
After=mysqld.service
[Service]
User=the-user
WorkingDirectory=/home/the-user/path-to-script
ExecStart=/home/the-user/path-to-script/start.sh
SuccessExitStatus=0
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Minha pergunta é: o que estou fazendo de errado? Como posso iniciar este serviço na inicialização?
Responder1
Use o comando real, que systemd
seria:
sudo systemctl enable my-service
Para referência, você não precisa usar o diretório principal do sistema para o arquivo da unidade se quiser que ele seja executado para um usuário normal, por exemplo, o seu. Você pode criá-lo em um diretório como:
~/.config/systemd/user/
Então você pode fazer:
systemctl --user enable my-service
Isto evita a necessidade desudo
Como você observou em seu comentário, ao executar instâncias por usuário da systemd
diretiva User
deve estar ausente
Responder2
Observação:
Em outros casos, você obtém o mesmo erro:
O service
comando coloca oobjetoprimeiro !
service foo start
Osystemctl
comando faz o oposto:
systemctl start foo
Além disso, em serviço, você não pode adicionar ".service", mas pode usar o systemctl.