当前位置:首页>Linux>Linux命令每日一清单017:kill--进程终止命令速查表

Linux命令每日一清单017:kill--进程终止命令速查表

  • 2026-10-10 16:48:12
Linux命令每日一清单017:kill--进程终止命令速查表

kill是Linux系统中用于向进程发送信号的标准命令。尽管名称直译为“杀死”,但kill的功能远不止于终止进程——它可以向进程发送各种信号,用于优雅停止、强制终止、重新加载配置、暂停或恢复进程等操作。

kill通过进程ID(PID)定位目标进程,而它的变体命令killall和pkill则可以通过进程名或其他属性进行匹配。信号是Linux进程间通信的基本方式之一,掌握kill命令是进行进程管理和故障排查的核心技能。

1. 基本语法

命令说明
kill PID
发送SIGTERM信号(优雅停止)
kill -9 PID
强制终止进程(SIGKILL)
kill -1 PID
发送SIGHUP信号(重新加载配置)
kill -l
列出所有可用的信号名称和编号
kill -0 PID
检查PID是否存在(不实际发送信号)
kill -s SIGTERM PID
指定信号名称发送

2. 常用信号参考

信号编号说明
SIGHUP
1
重新加载配置——大多数守护进程在不重启的情况下重新读取配置
SIGINT
2
中断进程——等同于按Ctrl+C
SIGQUIT
3
退出并生成核心转储文件(用于调试)
SIGKILL
9
强制终止——无法被捕获或忽略,立即终止进程
SIGTERM
15
优雅停止——默认信号,进程可清理后退出
SIGUSR1
10
用户自定义信号1——具体含义取决于应用程序
SIGUSR2
12
用户自定义信号2——具体含义取决于应用程序
SIGCONT
18
恢复被SIGSTOP暂停的进程
SIGSTOP
19
暂停进程——无法被捕获或忽略
SIGTSTP
20
终端停止——等同于按Ctrl+Z

3. 按PID终止进程

命令说明
kill 1234
优雅停止PID为1234的进程
kill -9 1234 5678
强制终止多个PID
kill -HUP 1234
重新加载PID 1234的配置
kill -STOP 1234
暂停PID 1234
kill -CONT 1234
恢复被暂停的PID 1234
kill -9 $(pidof firefox)
强制终止所有firefox进程
kill -USR1 1234
发送用户自定义信号USR1

4. killall:按名称终止

killall根据进程名终止所有匹配的进程:

命令说明
killall nginx
发送SIGTERM给所有nginx进程
killall -9 nginx
强制终止所有nginx进程
killall -HUP nginx
重载所有nginx进程配置
killall -u zhangsan
终止指定用户的所有进程
killall -u zhangsan firefox
终止指定用户的firefox进程
killall -v firefox
终止并报告哪些进程被操作
killall -r "python.*"
使用正则表达式匹配进程名
killall -I FIREFOX
忽略大小写匹配
killall -w firefox
等待所有匹配进程终止后才退出

5. 后台作业管理

在当前Shell会话中管理后台作业:

命令说明
jobs
列出后台作业及其作业编号
kill %1
发送SIGTERM给作业编号1
kill -9 %1
强制终止作业编号1
kill %+
终止最近启动的后台作业
kill %%
终止当前(最近)的后台作业
kill %?python
终止命令名包含python的作业

6. 进程查找与终止组合

命令说明
kill -9 $(pgrep -f "python app.py")
终止匹配完整命令行的进程
ps aux | grep nginx | awk '{print $2}' | xargs kill -9
查找并强制终止nginx进程
pidof mysqld | xargs kill -15
优雅停止mysqld
pkill -f "node server.js"
使用pkill按完整命令行终止
sudo kill -9 $(lsof -t -i:8080)
终止占用8080端口的进程

7. 信号使用场景

信号典型使用场景
SIGHUP (1)
Nginx、Apache、sshd等服务重载配置;终端断开时自动发送
SIGINT (2)
手动中断前台运行的命令(Ctrl+C)
SIGKILL (9)
进程无响应、僵尸进程、无法用SIGTERM停止时使用
SIGTERM (15)
默认的优雅停止方式,服务关闭前清理资源
SIGUSR1/2
日志轮转(如nginx)、状态报告(如dd)、自定义行为
SIGSTOP (19)
暂停进程(类似按Ctrl+Z,但无法被捕获)
SIGCONT (18)
恢复被暂停的进程(fg或bg命令也使用此信号)
SIGQUIT (3)
生成core dump用于调试程序崩溃

8. 信号列表查看

命令说明
kill -l
列出所有信号名称
kill -l 9
显示编号9对应的信号名称
kill -l KILL
显示KILL信号对应的编号
trap -l
列出系统支持的所有信号
man 7 signal
查看信号的完整文档

9. 实用组合模式

命令说明
kill -0 PID && echo "进程存在" || echo "进程不存在"
检查进程是否存在
for pid in $(pgrep java); do kill -15 $pid; done
优雅停止所有Java进程
killall -q process 2>/dev/null || echo "进程不存在"
静默终止,处理不存在的情况
(sleep 5 && kill -9 PID) &
5秒后强制终止(先尝试优雅停止)
sudo kill -9 $(ps aux | grep defunct | awk '{print $2}')
清理僵尸进程

10. 常用选项

选项完整名称说明
-l
--list
列出信号名称
-s
--signal
指定要发送的信号
-n
--signal-number
通过信号编号指定
-0
--signal 0
检查进程存在性(不发送实际信号)

11. killall常用选项

选项完整名称说明
-u
--user
仅终止指定用户的进程
-v
--verbose
显示详细输出
-w
--wait
等待进程终止后才退出
-r
--regexp
使用正则表达式匹配
-I
--ignore-case
忽略大小写
-q
--quiet
静默模式(无进程匹配时不报错)

12. 故障排查

问题解决方法
进程在SIGTERM后未停止
等待几秒,进程可能正在清理;若仍无响应,升级到kill -9
No such process
PID已退出;使用ps -p PID验证是否还存在
Operation not permitted
进程属于其他用户,使用sudo kill PID
SIGKILL没有效果
进程处于不可中断睡眠(D状态),可能由I/O问题引起,只能重启系统
不确定要终止哪个PID
先用pidof name、pgrep name或ps aux | grep name查看
killall: no process found
进程名不匹配;检查拼写,或用-r正则表达式匹配
后台作业无法终止
使用jobs确认作业编号;作业可能已停止,先fg再操作
信号发送后无反应
确认进程是否正确处理信号;某些信号对守护进程含义不同

温馨提示: 优雅停止(SIGTERM)优先于强制终止(SIGKILL)。在生产环境中,应先尝试kill PID,给进程清理资源的机会,避免数据损坏。对于服务进程,SIGHUP通常用于重载配置而不中断服务。使用killall和pkill时要小心,确保进程名匹配正确,避免误终止其他进程。在脚本中使用时,建议先检查进程是否存在再发送信号。

本文PDF格式下载:

  关注公众号(haopython),请回复: LLTKILL

最新文章

随机文章