如何检测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
相关产品推荐
相关产品推荐

