在python中退出脚本时,子进程结束

在python中退出脚本时,子进程结束,python,Python,我创建了一个脚本来检查是否有其他脚本正在运行。 如果脚本在某种情况下卡住了,我想重新启动脚本 这是我的密码 import os import subprocess from subprocess import call import datetime import time from time import ctime statinfo = os.stat('nemo_logs/nemo_log_file_' + time.strftime('%Y-%m-%d') + '.txt') for

我创建了一个脚本来检查是否有其他脚本正在运行。 如果脚本在某种情况下卡住了,我想重新启动脚本

这是我的密码

import os
import subprocess
from subprocess import call 
import datetime
import time
from time import ctime

statinfo = os.stat('nemo_logs/nemo_log_file_' + time.strftime('%Y-%m-%d') + '.txt')
for i in range(1):
    first_size = statinfo.st_size
    time.sleep(10)
    if statinfo.st_size > first_size:
        print("SCRIPT IS RUNNING")
    else:
        print("SCRIPT IS NOT RUNNING. TRYING TO KILL THE SCRIPT...")
        os.system("pkill -9 -f selenium_nemo.py")
        print("SCRIPT KILLED. TRYING TO RESTART THE SCRIPT...")
        subprocess.call("python /root/btree/selenium_nemo.py", shell=True)
        print("SCRIPT STARTED")
当我调用subprocess.call时,脚本strart但是它在'ckeck'脚本中执行。如果停止执行check脚本,子流程将结束。检查脚本位于crontab上,我希望在启动已卡住的脚本后退出检查脚本。 我怎样才能做到这一点?
谢谢

不用直接调用python/root/btree/selenium_nemo.py,您可以调用nohup python/root/btree/selenium_nemo.py&。这将使您的新进程与调用进程分离,因此它将在python脚本停止后继续存在。

不确定这是否是您的主要问题,但存储在statinfo中的值是一个不会神奇地更新的元组。等待10秒后,您必须再次调用os.stat。嗨@lenz,statinfo工作正常。我可以得到文本的第一个大小,然后重新检查它。这个脚本仍在开发中。稍后我将对脚本进行一些更改,但这是我目前的主要问题。我只是说,如果条件永远不会为真,因为statinfo.st_大小即使文件大小更改也不会更改。如果你错了,你也可以写:你是对的。上面的脚本永远不会达到else条件。在我的测试中,我强制脚本进入else条件。谢谢你的建议嗨,克里斯蒂安,我明白了。剧本被杀了。正在尝试重新启动脚本。。。nohup:忽略输入并将输出附加到“nohup.out”。脚本成功启动,但当我终止cron脚本时,另一个脚本停止工作。您是否检查脚本是否成功重启?它是否在终止cron脚本之前运行?是,脚本成功启动。1396 1.6 0.2 80048 24220 pts/1 S+12:15 0:00 python/root/btree/selenium_nemo.py。但是在check脚本终止后,selenium_nemo.py stopsy应该添加&在命令行的末尾。也就是说,nohup python/root/btree/selenium_nemo.py&@Hooting,谢谢,忘了这个。把它加到我的答案里。