Python Process_Manager

该代码定义了一个`Process_Manager`类,用于管理指定的Python进程。它能检查进程是否存在,如果不存在则启动,如果存在多个则认为异常。还能重启进程,通过`pgrep`获取进程ID,并使用`subprocess`模块执行操作如启动、杀死进程。
摘要由CSDN通过智能技术生成
import subprocess


class Process_Manager:
    def __init__(self, process_name, log_name):
        self.process_name = process_name
        self.log_name = log_name

    def check(self):
        # 执行命令,获取进程 ID
        pids = self._get_pids()
        if len(pids) < 2:
            print(f"进程 {self.process_name} 不存在, 尝试重新拉起...")
            self.start()
            return
        elif len(pids) > 2:
            print(f"进程 {self.process_name} 异常...")
        print("进程运行中, ID:", pids[0])

    def restart(self):
        pids = self._get_pids()
        self.kill(pids)
        self.start()

    def start(self):
        command = f"nohup python {self.process_name} > {self.log_name} 2>&1 &"
        subprocess.call(command, shell=True)

    def kill(self, pids=None):
        if pids is None:
            pids = self._get_pids()
        print("退出进程!!")
        for p in pids[:-1]:
            command = f"kill {p}"
            subprocess.call(command, shell=True)
            print(command)

    def _get_pids(self):
        command = f"pgrep -f 'python {self.process_name}'"
        process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        output, _ = process.communicate()
        pids = output.decode().split("\n")[:-1]
        return pids
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值