基础概念:信号(Signal)
杀死进程本质是向进程发送信号,常用信号包括:
SIGTERM (15)
:默认终止信号,请求进程正常退出(允许保存数据)。SIGKILL (9)
:强制立即终止进程(无法被捕获或忽略)。SIGHUP (1)
:挂起信号(常用于重启进程)。
📌 优先使用
SIGTERM
,若无效再尝试SIGKILL
,避免数据丢失。
查找进程ID(PID)
终止进程前,需先确定其PID:
-
ps
命令(推荐):ps aux | grep "进程名" # 示例:ps aux | grep firefox
- 输出第二列为PID(如
12345
)。
- 输出第二列为PID(如
-
pgrep
命令(快速定位):pgrep -f "进程名" # 示例:pgrep -f nginx
-
top
或htop
:
实时查看资源占用,按k
并输入PID终止进程。
终止进程的4种方法
方法1:kill
命令(精确终止)
kill [信号] PID # 发送默认SIGTERM kill -9 PID # 强制终止(SIGKILL)
示例:
kill 12345 # 请求PID 12345正常退出 kill -9 12345 # 强制杀死该进程
方法2:killall
(按进程名终止)
killall [信号] 进程名
示例:
killall chrome # 终止所有Chrome进程 killall -9 mysqld # 强制终止MySQL服务
方法3:pkill
(模式匹配终止)
支持正则表达式匹配进程名:
pkill -f "进程关键词"
示例:
pkill -f "python script.py" # 终止包含该关键词的进程
方法4:xkill
(图形界面终止)
在终端输入 xkill
,鼠标会变成骷髅图标,点击无响应的图形窗口即可终止。
安全操作指南
- 避免误杀关键进程:
- 系统进程(如
systemd
、sshd
)需谨慎操作,可能导致系统崩溃。 - 用
ps -p PID -o cmd
确认进程详细信息。
- 系统进程(如
- 权限控制:
- 普通用户只能终止自己的进程。
- 终止系统进程需
sudo
权限(如sudo kill 123
)。
- 资源释放:
终止后检查资源是否释放:top
或df -h
(磁盘)、free -h
(内存)。
常见问题解决
- “权限被拒绝”:
使用sudo
提权(如sudo kill -9 PID
)。 - 进程残留:
若父进程未回收资源,先终止父进程:ps -o ppid= -p PID
查找父PID。 - 僵尸进程(Zombie):
状态为Z
的进程无法被杀死,需重启其父进程。
场景 | 推荐命令 | 风险等级 |
---|---|---|
安全终止单个进程 | kill PID |
低 |
强制终止无响应进程 | kill -9 PID |
中 |
终止同名所有进程 | killall 进程名 |
中 |
模糊匹配终止 | pkill -f "关键词" |
中 |
图形界面终止 | xkill |
低 |
⚠️ 操作前务必确认PID和进程名!强制终止(
-9
)是最后手段,可能导致数据损坏。
引用说明: 基于Linux内核标准信号机制(signal(7)
)及GNU核心工具集(ps(1)
, kill(1)
)官方文档,可通过 man 信号名
(如 man 7 signal
)或 man 命令
(如 man kill
)进一步查阅。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8458.html