在 Linux 中,有没有办法使守护进程变得“独特”?
即,如果守护进程已经启动/运行,则不再启动它。我认为可以通过在守护进程首次启动时创建一个特定文件,然后检查该文件来完成,但是如果守护进程被终止并且文件未被删除,这会产生问题。有没有一种更“linux”的方法来检查给定的守护进程(我控制的代码)是否存在?
答案1
您基本上已经描述了 PID(进程 ID)跟踪,这通常由服务管理器(例如systemd
)或为特定守护程序编写的脚本来完成。启动进程后,PID 会写入文件,稍后用于检查进程的状态或停止进程。这不会阻止程序的另一个副本运行,只是服务管理器或启动脚本启动另一个实例。
通过列出具有该 ID 的进程来检测处理“过时的 pid 文件”(其中进程未运行但文件仍然存在)。如果没有找到匹配的进程,则可以认为该进程被不当停止并删除了 PID 文件。