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

2024-04-25 09:59:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个服务器,我想在它上面运行Python(2.7)线程服务器脚本。你知道吗

我有一个cron作业,它每分钟都验证脚本是否启动并运行,如果是,就让它继续工作,否则就启动它。你知道吗

我已经搜索并找到了几种解决方案,使这个检查工作,但没有一个解决方案,我发现似乎工作。你知道吗

我希望始终在服务器上运行的Python脚本称为服务器侦听器.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脚本,即使它是第一次从这个脚本启动。你知道吗

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

任何帮助都将受到感激。你知道吗


Tags: inpy服务器脚本ifbinhtmlarg