如何检查python脚本是否已启动?

时间:2016-02-04 13:23:07

标签: python linux python-3.x

我想确保我的python脚本始终全天候运行。它在Linux服务器上。如果脚本崩溃,我将通过cron重新启动它。

有没有办法检查它是否正在运行?

5 个答案:

答案 0 :(得分:3)

取自answer

一个bash脚本,它启动你的python脚本并在它没有正常退出时重新启动它:

#!/bin/bash
until script.py; do
    echo "'script.py' exited with code $?. Restarting..." >&2
    sleep 1
done

然后在后台启动监控脚本:

nohup script_monitor.sh &
多个脚本的

编辑

监控脚本:

cat script_monitor.sh
#!/bin/bash

until ./script1.py 
do
    echo "'script1.py' exited with code $?. Restarting..." >&2
    sleep 1
done &

until ./script2.py 
do
    echo "'script2.py' exited with code $?. Restarting..." >&2
    sleep 1
done & 

脚本示例:

cat script1.py
#!/usr/bin/python
import time
while True:
    print 'script1 running'
    time.sleep(3)

cat script2.py
#!/usr/bin/python
import time
while True:
    print 'script2 running'
    time.sleep(3)

然后启动监控脚本:

./script_monitor.sh

这将在后台为每个python脚本启动一个监视器脚本。

答案 1 :(得分:1)

尝试此操作并输入您的脚本名称。

ps aux | grep SCRIPT_NAME

答案 2 :(得分:1)

  • 创建一个脚本(比如说check_process.sh
    • 使用ps命令查找python脚本的进程ID。 将其保存在变量说pid
    • 创建一个无限循环。在其中,搜索您的过程。如果发现,则睡30或60秒,然后再次检查。
    • 如果找不到pid,请退出循环并向您的mail_id发送邮件,说明该进程未运行。

现在通过check_process.sh致电nohup,以便它会在后台持续运行。

我实现了它,并记住它工作正常。

答案 3 :(得分:1)

您可以使用

  • runit
  • monit的
  • systemd(我认为)

不要用脚本破解这个

答案 4 :(得分:1)

在Ubuntu上,

upstart将监视您的进程并在崩溃时重新启动它。我相信systemd也会这样做。无需重新发明这一点。