Como posso iniciar um serviço depois que o PostGres foi inicializado?

0

Estou usando o CentOS 7. Eu tenho um servidor nodeJS que quero executar como um serviço, mas eu preferiria que o serviço fosse iniciado depois que o servidor PostGres 9.6 tivesse sido inicializado. Eu tentei especificar depois de minha descrição do serviço (/usr/lib/systemd/system/nodesrv.service) ...

[Unit]
Description=NodeService nodejs server

[Service]
User=rails
Group=rails
ExecStart=/home/rails/myrailssite_production/NodeService/start.sh
ExecStop=/home/rails/myrailssite_production/NodeService/stop.sh
Type=forking
RemainAfterExit=yes
After=postgresql-9.6.service

[Install]
WantedBy=multi-user.target

No entanto, acho que o PostGres ainda precisa de alguns segundos para inicializar, porque vejo isso na saída do serviço acima

[rails@server ~]$ sudo journalctl -u nodesrv
[sudo] password for rails: 
-- Logs begin at Mon 2018-06-11 11:08:17 EDT, end at Mon 2018-06-11 11:09:40 EDT. --
Jun 11 11:08:17 server systemd[1]: Starting NodeService nodejs server...
Jun 11 11:08:17 server start.sh[124]: psql: could not connect to server: No such file or directory
Jun 11 11:08:17 server start.sh[124]: Is the server running locally and accepting
Jun 11 11:08:17 server start.sh[124]: connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Existe uma maneira de especificar a não execução do script até que o PostGres esteja ativo e em execução? Eu percebo que pode haver circunstâncias em que o PostGres não consegue inicializar em todos os casos, nesse caso, estou bem com nunca executar o serviço.

    
por Dave 11.06.2018 / 17:32

1 resposta

0

Você pode usar o ExecStartPost no seu serviço de postgre, que pode acionar o início do seu serviço ou você pode usar o ExecStartPre em seu serviço, que pode verificar o serviço postre antes de executar o ExecStart

    
por 11.06.2018 / 19:20