Why does
systemctl
think my application is not running?
Porque, como diz Tom Hunt, não está sendo executado.
Could it be that
systemctl
is not calling the stop function because it thinks my application is already stopped?
Não. É muito claro que fez chamar a função de parada e executou como processo # 31850.
Existem duas possibilidades aqui, nenhuma das quais são problemas do sistema:
- Em algum momento, você iniciou seus programas de serviço diretamente, não como um serviço systemd. Isso é o que ainda está funcionando. É claro que o sistema não saberá disso.
- A funcionalidade
status
do seu scriptinit.d
está com defeito. Não seria o primeiro scriptinit.d
com defeito na história do mundo.
myapp.service - SYSV: Service script to start/stop my application
Esse "SYSV:" mostra que o script init.d
é ruim. Ele nem tem o bloco de cabeçalho LSB.
Como diz Tom Hunt, escreva algumas unidades de serviço. Ou lembre-se da primeira regra para migração para o systemd e simplesmente aperte os que já foram escritos. Pela aparência, você realmente tem três serviços interdependentes, mas distintos, e deve estar escrevendo várias unidades de serviço com essas interdependências expressas. Se um deles é um servidor de banco de dados escutando na porta 3307, então a primeira regra quase certamente se aplica.