在 Debian 中,如何在更新另一个服务时停止一个服务

在 Debian 中,如何在更新另一个服务时停止一个服务

在 Debian 中,如何停止所有主管升级/重启前的流程PostgreSQL 的并在之后启动它们PostgreSQL 的完成了嗎?

背景:我想使用无人值守升级。如果数据库停止,进程也应关闭以避免数据丢失。

答案1

我对supervisord 不是很熟悉,所以请耐心听我说完,如果我的假设有误,请告诉我。据我所知,supervisord 会启动其他进程。假设停止和启动supervisord 本身也会停止/启动它控制的进程,那么我认为最简单的方法是调整supervisord systemd 服务以添加 BindsTo=postgresql.service。我更喜欢这样做,不是通过编辑supervisord.service 文件本身,而是通过创建目录 /etc/systemd/system/supervisord.service.d/ 并在其中放置一个名为 bindpostgresql.conf 的文件,然后向该文件添加:

[Unit]
BindsTo=postgresql.service

或者,如果您不想启动/停止 Supervisord 本身,而只想启动/停止它所控制的进程,那么一种简单的黑客方法是调整 postgresql.service,方法与上述相同,添加 ExecStartPost=-/path/to/script/startprocesses.sh 和 ExecStop=-/path/to/script/stopprocesses.sh 设置以运行一个脚本,告诉 Supervisord 启动/停止您的进程(请注意,“-”很重要,以免脚本失败时 postgresql 本身被标记为失败)。如果只有 1 个短命令,您也可以将 Supervisorctl 命令放在 /path/to/script.sh 的位置。

另外,使用无人值守升级时应非常小心。您应该确保拥有一个监控系统,以便在尝试升级后出现问题时通知您。

谢谢! -担

相关内容