检查进程是否已在服务器上运行

时间:2019-01-16 17:35:52

标签: python linux process

我拥有一台服务器,要在其上运行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脚本。

我认为这可能与服务器上的“用户和权限”有关,但是由于我从不手动调用脚本,因此看不出出现此问题的原因。

将非常感谢您的帮助。非常感谢!

0 个答案:

没有答案