Eu tenho um arquivo de unidade systemd que inicia dois processos completamente separados, Apache e Tomcat (e antes de você comentar sobre isso, sei que deveria criar apenas dois arquivos de unidade separados, mas as permissões neste servidor estão totalmente bloqueadas). Ao iniciar o serviço através de uma sessão SSH, tudo inicia e para perfeitamente. No entanto, quando o servidor é reinicializado, apenas o Apache inicia o backup, com o systemd afirmando que está tudo bem. Quando verifico os logs do Tomcat, parece que ele foi iniciado, mas o processo simplesmente morre em algum momento.
O que poderia estar causando essa diferença de comportamento? Este serviço precisa esperar por mais alguma coisa antes de começar?
Arquivo de unidade:
[Unit]
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/home/opiusr/appstart.sh
ExecStop=/home/opiusr/appstop.sh
[Install]
WantedBy=multi-user.target
Ambos os scripts são wrappers que contêm algo assim:
/bin/su - opiusr -c "/home/opiusr/bin/start_tomcat -s" >> $LOG_FILE
/bin/su - opiusr -c "/home/opiusr/bin/start_apache -s" >> $LOG_FILE
E esses scripts simplesmente envolvem os scripts de início e parada do Tomcat e do Apache, com algum registro extra.
EDIT: Eu vi esta resposta que é bastante semelhante: Systemd mata o serviço imediatamente após o início
Gostaria de saber se posso fazer outra coisa, visto que o sistema está bastante bloqueado. Tenho acesso total de edição ao arquivo da unidade e aos dois scripts, mas não tenho a capacidade de criar novos serviços ou tocar em diretórios do sistema.