即使它在Linux中崩溃,也会自动重启python脚本

时间:2018-03-21 11:37:21

标签: python linux shell scripting

我有一个必须一直运行的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'

这样做的替代方法是什么?我的脚本有什么问题?

2 个答案:

答案 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