daemon
我有一个使用命令(RHEL 6.2)守护进程的java进程。我正在使用以下行来启动该过程,并使用以下行来停止它:
daemon --command "/opt/my-service" --respawn --name=my-service --verbose
daemon --stop --name=my-service --verbose
在我尝试使用停止/启动方法重新启动我的过程之前,一切正常:
daemon --stop --name=my-service --verbose
daemon --command "/opt/my-service" --respawn --name=my-service --verbose
如果在执行上述命令之前进程正在运行,则现有进程将停止但不会创建新进程。相反,以下行将记录到/var/log/messages
:
Oct 27 07:59:46 myhostname my-service: my-service: fatal: failed to become a daemon: Resource temporarily unavailable
据我了解,这意味着我们试图获取 pid 文件的锁,但另一个进程正在持有它的锁。或者换句话说:原始进程仍在运行。
有趣的是,它无法通过以下命令复制:
daemon --command "sleep 30s" --respawn --name=sleeper --verbose
daemon --stop --name=sleeper --verbose
daemon --command "sleep 30s" --respawn --name=sleeper --verbose
那么在我的过程中一定有一些东西会导致/利用--stop
.
如何进行--stop
阻塞?