我创建了一个脚本来检查是否有其他脚本正在运行。 如果脚本卡住某些情况下我想重新启动脚本。在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 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
脚本strarts但其“ckeck”脚本内部执行。如果我停止执行检查脚本,子进程结束。检查脚本在crontab上,我想要在启动脚本后坚持退出检查脚本。 我怎么能做到这一点? 感谢
不知道这是否是您的主要问题,但存储在'statinfo'中的值是一个不会奇迹般更新的元组。等待10秒后,您必须再次调用'os.stat()'。 – lenz
嗨@lenz,statinfo工作正常。我可以获得文本的第一个大小,然后重新检查它。这个脚本还在开发中。我稍后要对脚本进行一些更改,但这是我现在的主要问题 –
我只是说你的if语句永远不会是真的,因为即使if语句中的statinfo.st_size也不会改变,文件的大小发生变化。你也可以写'如果假:' – lenz