systemd foi criado para controlar o início e a parada do Postgres. Ele funciona bem como esperado se o comando start ou start do systemctl for usado. Mas, se a máquina for reinicializada (systemctl reboot), durante o desligamento, o processo postgres SEMPRE é eliminado antes que o script ExecStop seja executado. No momento em que o script ExecStop é executado, o processo já foi eliminado e o script falha.
Aqui está o arquivo da unidade:
[Unit]
Description=PostgresStartStop service
Requires=network.target
After=network.target
Before=shutdown.target reboot.target halt.target kexec.target
DefaultDependencies=no
[Service]
Type=forking
RemainAfterExit=yes
ExecStart=/etc/rc.d/init.d/postgresStartStop start
ExecStop=/etc/rc.d/init.d/postgresStartStop stop
TimeoutSec=900
StandardOutput=inherit
PIDFile=/var/lib/pgsql/data/postmaster.pid
[Install]
WantedBy=multi-user.target
Eu tentei muitas diretivas diferentes, mas sem sucesso.