You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测Linux下指定Python脚本是否正在运行

Linux下Python脚本运行状态监控实现

你可以基于Python标准库搭配Linux系统原生能力完成需求,无需安装额外第三方依赖,适合新手直接使用。

核心实现逻辑

  • 按固定间隔循环检测目标进程状态
  • 通过匹配进程启动命令判断locationGPIO2.py是否在运行,避免误判
  • 检测到目标脚本停止(手动终止/崩溃退出)时,将heartbeat变量赋值为Inactive
  • 目标脚本正常运行时不执行任何额外操作

完整监控脚本代码

import subprocess
import time

# 可根据实际需求修改配置
TARGET_SCRIPT_NAME = "locationGPIO2.py"
CHECK_LOOP_INTERVAL = 5  # 检测间隔,单位为秒
heartbeat = "Active"  # 初始默认状态为正常运行

def check_script_running():
    """检测目标Python脚本是否处于运行状态"""
    try:
        # 调用Linux原生pgrep命令,-f参数匹配完整启动命令行
        check_result = subprocess.run(
            ["pgrep", "-f", TARGET_SCRIPT_NAME],
            capture_output=True,
            text=True,
            check=False
        )
        # 命令返回码为0代表匹配到了运行中的目标进程
        return check_result.returncode == 0
    except Exception as err:
        print(f"进程检测出错: {err}")
        return False

if __name__ == "__main__":
    while True:
        if not check_script_running():
            heartbeat = "Inactive"
            # 可在此处扩展后续逻辑,比如记录日志、自动重启目标脚本等
            print(f"目标脚本已停止,当前heartbeat值: {heartbeat}")
        time.sleep(CHECK_LOOP_INTERVAL)

使用注意事项

  • 启动监控脚本前,请先确认locationGPIO2.py已经正常启动运行
  • 不要将监控脚本的文件名设置为包含locationGPIO2.py的字符,否则会将监控脚本自身误判为目标进程
  • 可根据实际需要调整CHECK_LOOP_INTERVAL的值修改检测频率
  • 如果需要让监控脚本后台常驻运行,可以执行命令启动:nohup python3 your_monitor_script_name.py &

如果不想依赖系统pgrep命令,也可以通过纯Python遍历/proc目录下所有进程的启动命令信息实现检测,逻辑与上述方案完全一致,仅需替换进程查询部分的代码即可。

内容的提问来源于stack exchange,提问作者Harley Hartwell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 19:24:25