我有一个使用Python编写的守护进程.当它运行时,它有一个位于/tmp/filename.pid的PID文件.如果守护程序未运行,则PID文件不存在.
在Linux上,如何检查以确保PID文件存在,如果不存在,请执行命令重新启动它?
命令是
python daemon.py restart
Run Code Online (Sandbox Code Playgroud)
必须从特定目录执行.
edu*_*ffy 53
[ -f /tmp/filename.pid ] || python daemon.py restart
Run Code Online (Sandbox Code Playgroud)
-f
检查给定路径是否存在并且是否是常规文件(只-e
检查路径是否存在)
在[]
执行测试并返回0
成功,1
否则
它||
是类似C的or
,所以如果左边的命令失败,请执行右边的命令.
所以最后的声明说,如果/tmp/filename.pid
不存在则启动守护进程.
如果它是你想知道的bash脚本,这样的东西会起作用:
if [ ! -f "$FILENAME" ]; then
python daemon.py restart
fi
Run Code Online (Sandbox Code Playgroud)
更好的选择可能是查看lockfile
test -f filename && daemon.py restart || echo "File doesn't exists"
Run Code Online (Sandbox Code Playgroud)
解决问题的另一种方法是使用脚本来确保您的守护进程“保持”活动状态......
像这样的东西(注意:应该添加信号处理以正确启动/关闭):
$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
Run Code Online (Sandbox Code Playgroud)
这样,服务器即使意外死掉,也会保持存活状态。
归档时间: |
|
查看次数: |
47508 次 |
最近记录: |