$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
7条答案
按热度按时间pb3skfrl1#
-f
检查给定的路径是否存在并且是一个常规文件(仅-e
检查路径是否存在)[]
执行测试并在成功时返回0
,否则返回1
||
是一个类C的or
,所以如果左边的命令失败,执行右边的命令。所以最后一条语句说,如果
/tmp/filename.pid
不存在,那么就启动守护进程。93ze6v8z2#
omvjsjqw3#
如果你想知道的是bash脚本,像这样的东西可以工作:
更好的选择可能是查看lockfile
q43xntqr4#
其他的答案对于检测文件的存在都很好,但是对于一个完整的解决方案,你可能需要检查pidfile中的PID是否还在运行,以及它是否是你的程序。
f8rj6qna5#
解决这个问题的另一种方法是一个脚本,它可以确保您的守护进程“保持”活动状态...
类似这样的东西(注:应添加信号处理,以便正确启动/关闭):
通过这种方式,即使服务器意外死亡,它也将保持活动状态。
gijlo24d6#
您也可以使用现成的解决方案,如Monit。
o7jaxewo7#
如果文件存在,则返回true。如果文件不存在,则返回false。