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

如何用Python脚本在Linux系统中终止指定应用进程?

Linux下用Python终止指定应用的解决方案

问题分析

你之前用os.system("ps -ef | grep app_name | awk '{print $2}'")的问题在于:

  • os.system仅返回命令执行状态码,无法获取命令输出的PID
  • grep会把自身进程也列入结果,可能导致误操作

解决方案一:使用subprocess模块调用系统命令

这种方式贴近你手动操作的逻辑,同时修正了原代码的问题:

import subprocess
import os

# 替换为你要终止的应用名称
target_app = "app_name"

# 构造命令:过滤掉grep自身进程,只获取目标应用的PID
cmd = f"ps -ef | grep {target_app} | grep -v grep | awk '{{print $2}}'"
try:
    # 获取命令输出,转为字符串并去除首尾空白
    pid_output = subprocess.check_output(cmd, shell=True, text=True).strip()
    if not pid_output:
        print(f"未找到名称包含 {target_app} 的进程")
    else:
        # 拆分多个PID(如果有多个实例)
        pids = pid_output.split('\n')
        for pid in pids:
            try:
                # 发送9号终止信号
                os.kill(int(pid), 9)
                print(f"进程 {pid} 已成功终止")
            except OSError as err:
                print(f"终止进程 {pid} 失败: {err}")
except subprocess.CalledProcessError:
    print("获取进程列表时出错")

关键改进点

  • 用subprocess.check_output替代os.system,可以捕获命令的输出结果
  • 添加grep -v grep过滤掉grep自身的进程,避免误杀无关进程
  • 将输出的PID字符串转为int类型后,用os.kill发送终止信号

解决方案二:使用psutil模块(更推荐)

psutil是Python的跨平台进程管理库,无需依赖系统命令,逻辑更清晰可靠:

  1. 先安装psutil:
pip install psutil
  1. 编写脚本:
import psutil

# 替换为你要终止的应用名称
target_app = "app_name"

for process in psutil.process_iter(['name', 'pid']):
    try:
        # 匹配进程名称(也可以用process.cmdline()匹配完整命令行)
        if target_app in process.info['name']:
            process.kill()
            print(f"进程 {process.info['pid']} 已成功终止")
    except (psutil.NoSuchProcess, psutil.AccessDenied):
        # 忽略已结束的进程或权限不足的情况
        continue

print(f"已完成对名称包含 {target_app} 的进程终止操作")

优势

  • 跨平台兼容,不仅限于Linux
  • 无需处理复杂的命令行管道和字符串解析
  • 自动处理进程不存在、权限不足等异常情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:05:35