Estou tentando executar um script de shell do systemd. O script funciona bem na linha de comando.
O script (runServer.sh), executa um processo Java e fica assim:
#!/bin/bash
java -jar -Dresources=/home/pruss/dev/ServerDeploy5-4.1/Server/resources/MyServer.jar "0" "Test"
Dentro /usr/lib/systemd/system
(ou /lib/systemd/system/
em outros sistemas operacionais), criei um arquivo de serviço (myService.service):
[Unit]
Description=My Servers service
[Service]
ExecStart=/home/pruss/dev/ServerDeploy5-4.1/Server/runServer.sh
User=root
Type=oneshot
[Install]
WantedBy=multi-user.target
O resultado
Job for myService.service failed. See "systemctl status myService.service" and "journalctl -xn" for details.
Eu tento:
systemctl status myService.service
Loaded: loaded (/usr/lib/systemd/system/myService.service; disabled)
Active: failed (Result: exit-code) since Thu 2015-07-23 12:27:38 BST; 26s ago
Main PID: 28413 (code=exited, status=203/EXEC)
Respostas:
Você pode não precisar do script de shell. Você pode iniciar o processo a partir do arquivo myService.service, desde que use o caminho completo para o binário java e o arquivo jar. Deve parecer algo como
Funciona no CentOS 7.2.
fonte
Não tenho certeza de quem deu um polegar para baixo ..
Encontrei a solução e publiquei para poupar o esforço de outras pessoas.
O que você vê acima funciona. No entanto, o serviço final é assim:
Importante, dentro do meu script de shell, eu precisava colocar no caminho completo o arquivo .jar. java -jar /home/myprog.jar etc
ou seja, ./myJar.jar não funcionou. Espero que ajude.
fonte
Dê uma olhada na minha resposta no stackoverflow, que detalha como criar um
systemd
serviço para um aplicativo Java:/programming//a/22121547/272180
fonte
Este é o meu modelo systemd para java um processo
fonte
Eu tive o mesmo problema (código = encerrado, status = 203 / EXEC).
Não se esqueça de conceder permissões de execução de script ao seu usuário.
Você pode alterar o 777 para algo mais restritivo.
ou
Então:
fonte
Pode ser necessário adicionar um WorkingDirectory = para que ele saiba de onde executar as coisas.
fonte