本文目录导读:

- 方法一:Linux/macOS(使用
pkill和killall) - 方法二:Linux/macOS(使用
ps+awk+xargs) - 方法三:Windows(使用
taskkill和wmic) - 方法四:通用安全辅助脚本(含日志和确认)
- 重要注意事项
这里为您提供几种批量终止进程的脚本方法,涵盖Linux/macOS和Windows系统,以及不同复杂度的场景:
Linux/macOS(使用 pkill 和 killall)
这是最直接、最常用的方法。
按进程名称批量终止(最常用)
# 终止所有名为 "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(使用 taskkill 和 wmic)
按映像名称(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
重要注意事项
- 谨慎使用强力模式:
kill -9(或taskkill /F)不会给进程保存数据或清理资源的机会,可能导致文件损坏或数据丢失。 - 权限问题:终止其他用户的进程可能需
sudo(Linux/macOS)或以管理员身份运行(Windows)。 - 先测试再执行:在正式执行前,先运行只显示进程的查询命令:
- Linux/macOS:
ps aux | grep "关键词" - Windows:
tasklist | findstr "关键词"或wmic process list | findstr "关键词"
- Linux/macOS:
- 避免误杀自己:确保关键词不要过于模糊(如
python可能杀掉了你自己的脚本进程)。
推荐的工作流:
# 1. 先列出(检查) ps aux | grep "目标" # 2. 确认无误后执行(操作) pkill -f "目标"
根据您的具体操作系统和需求替换关键词,上述脚本均可以直接在终端或批处理中运行。