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

如何在Windows、Linux及Mac上定位运行myscript.py的Python进程

如何识别运行特定Python脚本(如myscript.py)的进程

要区分出运行myscript.py的Python进程,核心是获取进程的命令行参数——启动脚本时的命令行里会明确包含脚本文件名。psutil库完全支持跨平台(Windows、Linux、Mac)获取这个信息,直接改进原有代码即可:

改进后的代码

import psutil

target_script = "myscript.py"

for proc in psutil.process_iter(['pid', 'name', 'cmdline']):
    try:
        # 先筛选Python相关进程
        if "python" not in proc.info['name'].lower():
            continue
        
        # 获取命令行参数,空列表则跳过
        cmdline = proc.info.get('cmdline', [])
        if not cmdline:
            continue
        
        # 检查命令行中是否包含目标脚本名
        # 可根据需求调整匹配逻辑:比如用endswith处理绝对路径场景
        if any(target_script in part for part in cmdline):
            print(f"找到目标进程: PID={proc.info['pid']}, 命令行={' '.join(cmdline)}")
    except (psutil.NoSuchProcess, psutil.AccessDenied):
        # 处理进程已退出或无权限访问的情况
        continue

代码说明

  • 新增cmdline属性:通过psutil.process_iter指定获取进程的命令行参数列表,这是区分脚本的核心依据
  • 异常处理:避免遍历过程中遇到进程已退出、无权限访问等报错导致程序中断
  • 灵活匹配:用any(target_script in part for part in cmdline)可以匹配脚本名出现在命令行任意位置的情况(比如python /home/user/myscript.py或python -m myscript);若需精确匹配文件名结尾,可改为any(part.endswith(target_script) for part in cmdline)
  • 跨平台兼容:自动适配不同系统的Python进程名(python、python3、python3.11、python.exe等)

示例输出

找到目标进程: PID=1245157, 命令行=python /home/user/myscript.py --arg1 value1
找到目标进程: PID=2973672, 命令行=python3.11 ./myscript.py

注意事项

  • 权限要求:Linux/Mac下查看其他用户的进程可能需要sudo权限,Windows下可能需要以管理员身份运行脚本
  • 同名脚本区分:如果系统中有多个同名的myscript.py,可以通过匹配完整路径(比如/home/user/myscript.py)来精准定位
  • Pythonw.exe场景:Windows下后台运行的Python脚本可能是pythonw.exe,代码中的判断已覆盖这种情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:27:29