通过终端停止程序
终止前台程序(Ctrl+C)
- 适用场景:程序在终端前台运行(如
python script.py
)。 - 操作:
- 按下
Ctrl + C
组合键,立即发送中断信号(SIGINT
)。 - 程序会正常退出并释放资源。
- 按下
- 示例:
$ tail -f /var/log/syslog # 运行中按 Ctrl+C 终止
通过进程ID(PID)终止
- 步骤1:查找进程PID
- 使用
ps
或pgrep
定位进程:ps aux | grep "程序名" # 如 ps aux | grep firefox pgrep firefox # 直接输出PID
- 使用
- 步骤2:发送终止信号
kill [信号] PID
:默认发送SIGTERM
(15),允许程序清理资源:kill 1234 # 终止PID为1234的进程
- 强制终止(
SIGKILL
,信号9):kill -9 1234 # 强制杀死无响应的进程
通过进程名批量终止
killall
命令
终止所有同名进程:killall firefox # 终止所有Firefox进程 killall -9 nginx # 强制终止Nginx
pkill
命令
支持模式匹配(如进程名、用户等):pkill -f "python.*script" # 终止匹配"python script"的进程 pkill -u username # 终止某用户的所有进程
停止系统服务
Systemd 服务管理
- 停止服务(如Nginx、MySQL):
sudo systemctl stop nginx.service
- 重启服务:
sudo systemctl restart nginx
SysVinit 系统(旧版本)
- 使用
service
命令:sudo service apache2 stop
图形界面方法
- 系统监视器(GNOME)
- 打开路径:
应用程序 → 系统工具 → 系统监视器
。 - 选择进程 → 点击”结束进程”或”强制结束”。
- 打开路径:
- KSysGuard(KDE)
通过KDE菜单启动,右键选择进程并终止。
高级场景处理
终止后台作业
- 查看后台作业:
jobs # 显示后台任务列表
- 终止指定作业(后接作业号):
kill %1 # 终止作业号为1的任务
终止占用端口的进程
- 查找占用端口的PID:
sudo lsof -i :8080 # 查看8080端口的进程
- 终止该PID:
sudo kill 5678
注意事项
- 信号区别:
SIGTERM
(15):请求正常退出(推荐首选)。SIGKILL
(9):强制终止(可能导致数据丢失)。
- 谨慎使用
kill -9
:
强制终止可能破坏文件或进程状态,仅在其他方法无效时使用。 - 权限要求:
终止其他用户或系统进程需sudo
权限。 - 服务管理优先级:
对系统服务(如Nginx)优先使用systemctl stop
而非kill
。
场景 | 推荐命令 | 风险等级 |
---|---|---|
终端前台程序 | Ctrl + C |
低 |
已知PID的进程 | kill PID 或 kill -9 PID |
中到高 |
同名进程批量终止 | killall 或 pkill |
中 |
系统服务 | systemctl stop |
低 |
图形界面程序 | 系统监视器 | 低 |
引用说明:
- Linux
kill
命令文档(man7.org)- Systemd 服务管理指南(freedesktop.org)
- Linux 信号机制(GNU Libc Manual) 基于Linux内核5.0+及主流发行版(Ubuntu/CentOS)验证,确保操作安全可靠。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8850.html