怎么用脚本批量终止进程

wen 实用脚本 3

本文目录导读:

怎么用脚本批量终止进程

  1. 方法一:Linux/macOS(使用 pkillkillall
  2. 方法二:Linux/macOS(使用 ps + awk + xargs
  3. 方法三:Windows(使用 taskkillwmic
  4. 方法四:通用安全辅助脚本(含日志和确认)
  5. 重要注意事项

这里为您提供几种批量终止进程的脚本方法,涵盖Linux/macOSWindows系统,以及不同复杂度的场景:

Linux/macOS(使用 pkillkillall

这是最直接、最常用的方法。

按进程名称批量终止(最常用)

# 终止所有名为 "chrome" 的进程
pkill -f chrome
# 或者使用 killall(精确匹配进程名,不匹配命令行参数)
killall chrome

按命令行部分内容匹配(模糊匹配)

# 终止所有命令行中包含 "test_app.py" 的进程
pkill -f test_app.py

按用户和进程名结合

# 终止特定用户(如 www-data)运行的所有 python 进程
pkill -u www-data -f python

处理僵尸进程或指定信号

# 强制终止(SIGKILL),如果在普通终止后仍不起作用
pkill -9 -f "进程名"
# 终止某个终端会话的所有进程
pkill -t pts/1

Linux/macOS(使用 ps + awk + xargs

pkill 不够灵活或需要复杂过滤时,可以组合命令。

# 终止所有 CPU 占用超过 50% 的进程(示例)
ps aux | awk '$3 > 50 {print $2}' | xargs kill -9
# 终止所有属于特定组(或会话)的进程
ps -eo pid,comm | grep "process_name" | awk '{print $1}' | xargs -r kill -9
# 终止所有由特定父进程派生出的子进程
pkill -P 父进程PID

Windows(使用 taskkillwmic

按映像名称(exe文件名)终止

:: 终止所有 notepad.exe 进程
taskkill /IM notepad.exe /F
:: 终止所有 "chrome.exe" 进程
taskkill /IM chrome.exe /T /F

说明:/F 强制终止,/T 同时终止子进程。

按命令行匹配(需使用 wmic 或 PowerShell)

:: 使用 wmic(旧系统)
wmic process where "name like '%python%'" call terminate
:: 使用 PowerShell(推荐,更强大)
powershell -Command "Get-Process | Where-Object {$_.Path -like '*target*'} | Stop-Process -Force"

按 PID 列表终止(从文件中读取)

for /f %%i in (pids.txt) do taskkill /PID %%i /F

通用安全辅助脚本(含日志和确认)

在批量操作前,最好先预览将要杀死的进程,避免误杀。

#!/bin/bash
# safe_kill.sh - 带确认的批量终止脚本
# 设置你要匹配的关键词
PATTERN="your_app_name"
echo "以下进程将被终止:"
ps aux | grep "$PATTERN" | grep -v grep
# 用户确认
read -p "确认终止这些进程吗?(y/n): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    # 实际执行
    pkill -f "$PATTERN"
    echo "已终止所有匹配进程。"
else
    echo "已取消。"
fi

重要注意事项

  1. 谨慎使用强力模式kill -9(或 taskkill /F)不会给进程保存数据或清理资源的机会,可能导致文件损坏或数据丢失。
  2. 权限问题:终止其他用户的进程可能需 sudo(Linux/macOS)或以管理员身份运行(Windows)。
  3. 先测试再执行:在正式执行前,先运行只显示进程的查询命令
    • Linux/macOSps aux | grep "关键词"
    • Windowstasklist | findstr "关键词"wmic process list | findstr "关键词"
  4. 避免误杀自己:确保关键词不要过于模糊(如 python 可能杀掉了你自己的脚本进程)。

推荐的工作流

# 1. 先列出(检查)
ps aux | grep "目标"
# 2. 确认无误后执行(操作)
pkill -f "目标"

根据您的具体操作系统和需求替换关键词,上述脚本均可以直接在终端或批处理中运行。

抱歉,评论功能暂时关闭!