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

Ubuntu下Python脚本中psutil无法检测Chrome进程求助

Ubuntu下脚本无法检测Chrome进程的解决方案

以下是针对你遇到的问题的排查方向和解决办法:

核心原因分析

Ubuntu系统中,脚本运行的用户上下文、权限与Python Shell环境可能存在差异,导致无法跨用户或无权限读取Chrome进程信息;另外进程遍历过程中的异常未被处理,也可能导致脚本提前终止或跳过目标进程。

具体解决步骤

1. 权限与用户上下文问题

Chrome通常是当前桌面用户启动的,若脚本以不同用户(比如root或其他用户)运行,默认无法读取其他用户的进程信息。

  • 解决办法:
    • 用当前桌面用户运行脚本,避免使用sudo(除非必要);
    • 若必须用高权限运行,修改代码过滤目标用户的进程,确保只处理指定用户的Chrome进程。

2. 增强进程遍历的鲁棒性

原代码未处理进程访问过程中的异常(如权限不足、进程已结束),可能导致脚本中断或跳过目标进程。

修改后的代码示例

import psutil
import time
import getpass

def kill_processes():
    print('Process killing started...')
    target_user = getpass.getuser()  # 获取当前运行脚本的用户,可手动替换为Chrome所属用户名
    proc_list = []
    
    # 提前指定要获取的进程属性,提升效率并减少异常
    for proc in psutil.process_iter(['name', 'username', 'pid']):
        try:
            proc_info = proc.info
            proc_name = proc_info['name'].lower()
            proc_user = proc_info['username']
            
            # 匹配目标进程名且属于指定用户
            if ("chrome" in proc_name or "uc_driver" in proc_name) and proc_user == target_user:
                proc_list.append(proc)
                proc.terminate()
                print(f"尝试终止进程: {proc_name} (PID: {proc_info['pid']})")
                time.sleep(1)
                
                if proc.is_running():
                    proc.kill()
                    print(f"强制杀死进程: {proc_name} (PID: {proc_info['pid']})")
                    
        except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
            # 跳过无法访问的进程
            continue
    
    # 等待进程结束,处理剩余存活进程
    gone, alive = psutil.wait_procs(proc_list, timeout=3)
    for proc in alive:
        try:
            proc.kill()
            print(f"最终强制杀死进程: {proc.info['name'].lower()} (PID: {proc.pid})")
        except:
            pass

3. 验证进程名称匹配

若修改后仍无法检测到进程,可在脚本中添加代码打印所有进程名称,确认Chrome的实际进程名:

for proc in psutil.process_iter(['name']):
    try:
        print(proc.info['name'])
    except:
        pass

运行脚本后搜索输出中的Chrome相关名称,调整代码中的匹配字符串。

4. 环境一致性检查

确保脚本使用的Python环境与Shell中一致:

  • 在Shell中执行which python3获取路径,脚本开头指定该路径(如#!/usr/bin/python3);
  • 检查虚拟环境,确保脚本运行时激活了与Shell相同的虚拟环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 08:52:24