我有一个必须一直运行的python程序。如果由于某种原因它被停止我想自动重启它。我想过有一个每隔n秒运行一次的cron并检查程序是否正在运行。我的shell脚本如下所示:
#!/usr/bin/env bash
CM_COMMAND=`ps aux| grep abc| grep def| grep sudo`
LEN_COMMAND=${#CM_COMMAND}
if[["$LEN_COMMAND" -le "5"]]
then
echo "start the python program"
fi
exit
当我运行此脚本时,我收到错误:my_prog.sh: line 4: $'if[[118\r -le 5]]\r': command not found'
这样做的替代方法是什么?我的脚本有什么问题?
答案 0 :(得分:2)
也许这会更强大?
1)使用以下命令保存过程的PID:
{your_python_command} & echo $! >>/{some_folder}/your_app.pid
2)如果找不到PID,该脚本将检查并重新启动..
#!/usr/bin/env bash
PID=`cat /{some_folder}/your_app.pid`
if ! ps -p $PID > /dev/null
then
rm /{some_folder}/your_app.pid
{your_python_command} & echo $! >>/{some_folder}/your_app.pid
fi
3)将其添加到cronjob:
crontab -e
选择文本编辑器并在文件末尾添加此行:
*/1 * * * * /{your_path}/{your_script_name}
退出并保存
(这将每分钟运行一次脚本,检查crontab手册以设置您的确切间隔)
答案 1 :(得分:1)
如何将其作为服务?在我看来,这是一个非常干净的解决方案。
有关如何操作的详细信息,请参阅this article。