我使用Python编写了一个守护进程。当它在运行时,位于/tmp/filename.pid
的PID文件会存在。如果守护进程没有在运行,则PID文件不存在。
在Linux上,我如何检查以确保PID文件存在?如果不存在,如何执行重启命令?
重启命令为
python daemon.py restart
必须从特定目录执行。
我使用Python编写了一个守护进程。当它在运行时,位于/tmp/filename.pid
的PID文件会存在。如果守护进程没有在运行,则PID文件不存在。
在Linux上,我如何检查以确保PID文件存在?如果不存在,如何执行重启命令?
重启命令为
python daemon.py restart
必须从特定目录执行。
[ -f /tmp/filename.pid ] || python daemon.py restart
-f
检查给定路径是否存在且是常规文件(只有-e
检查路径是否存在)
[]
执行测试并在成功时返回0
,否则返回1
||
类似于C语言中的or
,如果左侧命令失败,则执行右侧命令。
因此,最终语句的意思是,如果/tmp/filename.pid
不存在,则启动守护进程。
test -f filename && daemon.py restart || echo "File doesn't exists"
如果你想了解 bash 脚本编程,以下代码可以实现:
if [ ! -f "$FILENAME" ]; then
python daemon.py restart
fi
一个更好的选择可能是查看 lockfile。$PIDFILE = "/path/to/pidfile"
if [ -f "$PIDFILE" ]; then
echo "Pid file exists!"
exit 1
fi
while true; do
# Write it's own pid file
python your-server.py ;
# force removal of pid in case of unexpected death.
rm -f $PIDFILE;
# sleep for 2 seconds
sleep 2;
done
if [ -f "$PIDFILE" ]; then
,我尝试进行编辑,但更改太小了,无法在stackoverflow上提交。:/ - logidelicls /tmp/filename.pid