我拥有一台服务器,要在其上运行python(2.7)线程服务器脚本。
我有一个cron作业,它每分钟都会验证脚本的启动和运行,如果是,请让其继续执行工作,否则启动它。
我已经搜索并找到了使此检查有效的解决方案,但是我发现没有一个解决方案似乎有效。
我要始终在服务器上运行的python脚本称为“ serverListener.py”
那么,发生了什么,cron作业运行脚本 wd.sh ,其中包含:
#!/bin/bash
python /home2/ofekafsc/public_html/cgi-bin/wd.py
现在,脚本 wd.py 有一个我尝试使用的解决方案,但我从未收到 true 。
我正在尝试检查该进程是否正在运行,如果不执行任何操作,请启动它。我的问题是,它总是返回FALSE(因为服务器未运行)
代码:
#!/usr/bin/python
import subprocess
import psutil
def running3(program, scriptname):
for pid in psutil.pids(): # Iterates over all process-ID's found by psutil,
try:
p = psutil.Process(pid)
if program in p.name():
for arg in p.cmdline():
if scriptname in str(arg):
return True
else:
pass
else:
pass
except Exception as e:
try:
f = open("/home2/ofekafsc/public_html/cgi-bin/ERRORLOG.txt", "w+")
f.write(str(e))
f.close()
except Exception as e:
print(str(e))
if(running3("python", "serverListener.py")):
print("RUNNING")
sys.exit()
else:
subprocess.call("/home2/ofekafsc/public_html/cgi-bin/serverListener.py")
如前所述,以上代码无法完成工作。
这是循环所发现的:
Program name : python
arg in cmdline: python
arg in cmdline: /home2/ofekafsc/public_html/cgi-bin/wd.py
即使它是首次从该脚本启动的,它也找不到serverListener.py
脚本。
我认为这可能与服务器上的“用户和权限”有关,但是由于我从不手动调用脚本,因此看不出出现此问题的原因。
将非常感谢您的帮助。非常感谢!