systemd 单元文件的创建是为了控制 Postgres 的启动和停止。如果使用 systemctl start 或 start 命令,它会按预期正常工作。但是,如果机器重新启动(systemctl restart),则在关闭期间,postgres 进程始终会在执行 ExecStop 脚本之前被终止。当执行 ExecStop 脚本时,该进程已被终止,并且脚本失败。
这是单元文件:
[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
我尝试了许多不同的指令,但没有效果。