pkill、killall和pgrep组合是麒麟系统中批量终止同名进程的三大高效方法:pkill按名称/用户/完整命令行匹配并发送信号;killall按可执行文件名终止进程组,支持交互确认;pgrep结合kill可先预览再精准终结。

当你在麒麟系统中发现多个同名进程(比如同时开了3个WPS、5个Chrome标签页对应的渲染进程)持续占用资源,图形界面无法逐个关闭,必须一次性全部终止时,不能靠反复查PID再kill——那样效率低还容易漏掉新启动的实例。
用pkill按名称批量终止所有同名进程
这一步最直接:不用手动找PID,一条命令就能匹配并发送信号给所有符合条件的进程。
方法一:发送默认TERM信号(推荐先试)
在终端输入:pkill wps
它会向所有名为“wps”的进程发送SIGTERM,给它们机会保存文档、释放锁、正常退出。3秒内未退出的进程会残留,需升级操作。
方法二:强制终止全部匹配进程
如果TERM无效,执行:pkill -9 wps
这条命令不检查进程状态,直接发出SIGKILL,所有wps进程内存立即清空、文件句柄强制关闭。【未保存的编辑内容将永久丢失】
方法三:限定用户范围,避免误杀他人进程
你登录用户名是“user1”,但系统里还有“user2”也在跑qq,执行:pkill -9 -u user1 qq
这样只杀你自己账户下的qq进程,不会影响其他登录用户的会话。
方法四:匹配完整命令行(适合带参数启动的程序)
比如你用python3启动了一个后台服务:python3 /home/user1/app/server.py --port 8080
直接pkill python3会误杀所有Python进程,改用:pkill -9 -f "server.py"
-f参数让pkill搜索整个命令行字符串,精准命中目标。
用killall按可执行文件名终止进程组
killall和pkill不同:它只认可执行文件的basename,不解析命令行参数,对大小写敏感,且默认不匹配路径部分。
第一步:尝试优雅终止
执行:killall firefox
若firefox是通过/usr/bin/firefox启动的,这个命令能匹配成功;但如果它是以./firefox或/firefox-bin方式运行,就找不到。
第二步:强制终止所有同名实例
若第一步无响应,执行:killall -9 firefox
注意:如果当前没有firefox进程,killall会报错“firefox: no process found”,这是正常现象,无需处理。
第三步:启用交互确认模式(防手滑)
不确定是否该杀时,加-i参数:killall -i -9 chrome
每找到一个chrome进程,都会问你“Terminate chrome(12345)? (y/N)”,输y才执行,输N跳过。
用pgrep结合kill精确筛选后批量终结
这是最安全的组合:先人工核对,再批量操作,特别适合生产环境或关键业务场景。
① 先列出所有匹配进程的PID和名称,供你确认:
pgrep -l -f "node server.js"
输出类似:12345 node server.js 12346 node server.js —— 看清楚是不是你要杀的。
② 确认无误后,把pgrep结果直接交给kill处理:
kill -9 $(pgrep -f "node server.js")
注意:$()是命令替换语法,shell会先执行里面的pgrep,再把输出的PID列表填入kill命令。
③ 如果只想杀指定用户的进程,加-u参数限定:
kill -9 $(pgrep -u user1 -f "java -jar")
这能排除root或其他用户启动的java服务,大幅降低误操作风险。











