如何正确处理在服务脚本中删除pid.file

我正在尝试编写应用程序的服务脚本。 所以我可以像这样控制它:

./myscript.sh start|stop|status 

启动pid.file与进程id创build,并基于它我可以检查状态和停止进程。 在停止命令我删除pid.file – 没关系。

但是,如果应用程序exception崩溃 – 关机等, pid.file不能删除,我需要手动删除它。

如何正确处理脚本中的这种exception情况?

您可以validation该pid是否正在运行并且属于您的应用程序:

 pid=$(< "$pidfile") # a bash builtin way to say: pid=$(cat $pidfile) if kill -0 $pid && [[ -r /prod/$pid/cmdline ]] && xargs -0l echo < /proc/$pid/cmdline | grep -q "your_program_name" then # your application is running true else # no such running process, or some other program has acquired that pid: # your pid file is out-of-date rm "$pidfile" fi