键盘中断:Ctrl + C
(最常用)
- 适用场景:终止当前终端中正在前台运行的命令(如卡死的脚本、持续输出的进程)。
- 操作步骤:
- 在运行命令的终端窗口中,直接按下
Ctrl + C
。 - 系统会发送
SIGINT
信号,命令立即终止。
- 在运行命令的终端窗口中,直接按下
- 注意:
- 仅对当前终端的前台进程有效。
- 可能无法强制结束某些顽固进程(需结合后续方法)。
挂起进程:Ctrl + Z
+ kill
- 适用场景:将前台进程转为后台暂停,再手动结束。
- 操作步骤:
- 按
Ctrl + Z
暂停进程(进程状态变为Stopped
)。 - 输入
jobs
查看暂停的进程编号(如[1]
)。 - 结束进程:
- 终止编号为1的进程:
kill %1
- 强制终止:
kill -9 %1
- 终止编号为1的进程:
- 按
kill
命令:精准结束进程
- 适用场景:通过进程ID(PID)结束后台或跨终端的进程。
- 操作步骤:
- 查找目标进程的PID:
ps aux | grep "进程名" # ps aux | grep firefox
- 根据PID结束进程:
kill PID # 发送SIGTERM(15),允许进程清理后退出 kill -9 PID # 发送SIGKILL(9),强制立即结束(慎用)
- 查找目标进程的PID:
- 关键信号说明:
| 信号 | 值 | 作用 |
|——|—-|——|
|SIGTERM
| 15 | 默认终止信号,安全退出 |
|SIGKILL
| 9 | 强制终止,可能丢失数据 |
killall
/ pkill
:按名称结束进程
- 适用场景:批量结束同名进程,无需查找PID。
- 操作示例:
killall firefox # 结束所有名为"firefox"的进程 pkill -f "python script.py" # 结束匹配完整命令的进程
- 常用选项:
-e
:显示被结束的进程名。-i
:交互式确认(避免误操作)。
systemctl
:管理系统服务
- 适用场景:结束由Systemd管理的后台服务(如Web服务器、数据库)。
- 操作示例:
systemctl stop nginx # 停止Nginx服务 systemctl restart apache2 # 重启Apache
图形化工具:系统监视器
- 适用场景:适合桌面用户,直观操作。
- 操作步骤:
- 打开系统监视器(如GNOME的
gnome-system-monitor
)。 - 在“进程”选项卡中找到目标进程。
- 右键点击 → 选择“结束”或“强制结束”。
- 打开系统监视器(如GNOME的
注意事项与风险规避
- 数据丢失风险:
- 优先使用
SIGTERM
(kill PID
),给予进程清理资源的时间。 SIGKILL
(kill -9
)是最后手段,可能导致文件损坏。
- 优先使用
- 权限要求:
- 普通用户只能结束自己的进程。
- 结束系统进程需
sudo
权限(如sudo kill -9 PID
)。
- 僵尸进程处理:
- 僵尸进程(状态为
Z
)已终止,无需手动结束,需由父进程回收。
- 僵尸进程(状态为
总结建议
- 前台进程 → 首选
Ctrl + C
。 - 后台进程 → 用
ps
查PID →kill PID
。 - 批量结束 →
killall
或pkill
。 - 系统服务 →
systemctl stop
。
引用说明: 参考Linux官方文档(kernel.org)及《Linux命令行与Shell脚本编程大全》中的进程管理章节,同时遵循POSIX标准信号处理规范,实践方法已在Ubuntu 22.04/CentOS 7环境中验证。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7378.html