系统监控 / 命令文档
Linux kill命令
概述
掌握进程管理的核心工具
基本概念
kill命令是Linux系统中用于终止进程的核心工具。它通过向进程发送信号来控制进程的行为。
核心作用:
终止运行中的进程
向进程发送各种控制信号
进行进程管理和故障排除
系统资源回收和优化
重要提示: kill命令实际上是发送信号,而不是直接"杀死"进程。进程收到信号后会根据信号类型执行相应的操作。
命令语法
kill [选项] [信号] PID kill -l # 列出所有信号 kill -s 信号名 PID killall 进程名 pkill 进程名
常用选项:
-l : 列出所有可用信号
-s : 指定信号名称
-9 : 强制终止信号
-15 : 正常终止信号(默认)
# 正常终止进程 kill 1234 # 强制终止进程 kill -9 1234 # 使用信号名 kill -KILL 1234
常用信号详解
| 信号编号 | 信号名称 | 含义 | 应用场景 |
|---|---|---|---|
| 1 | SIGHUP | 挂起信号 | 重新加载配置文件,重启服务 |
| 2 | SIGINT | 中断信号 | 相当于Ctrl+C,正常中断 |
| 9 | SIGKILL | 强制终止 | 无条件终止,无法被捕获 |
| 15 | SIGTERM | 正常终止 | 默认信号,允许进程清理资源 |
| 18 | SIGCONT | 继续执行 | 恢复暂停的进程 |
| 19 | SIGSTOP | 暂停进程 | 暂停进程执行 |
1. 系统维护
终止僵尸进程
清理系统资源
重启系统服务
2. 故障排除
终止无响应程序
释放被占用的端口
解决进程死锁
3. 服务管理
重新加载配置
优雅重启服务
批量管理进程
注意事项: 优先使用SIGTERM(15)而非SIGKILL(9) 谨慎操作系统关键进程 确认PID正确性,避免误杀
1. 查找进程PID
# 查看所有进程 ps aux | grep nginx # 查看进程树 pstree -p # 根据进程名查找PID pidof nginx pgrep nginx
2. 终止单个进程
# 正常终止 kill 1234 # 强制终止 kill -9 1234 # 使用信号名 kill -TERM 1234
3. 批量操作
# 终止所有nginx进程 killall nginx # 按进程名模糊匹配 pkill -f "python.*server" # 终止用户所有进程 pkill -u username
服务重启技巧
# Nginx优雅重启 kill -HUP `cat /var/run/nginx.pid` # Apache重新加载配置 kill -USR1 `pidof httpd` # 检查进程是否存在 kill -0 1234 && echo "进程存在"
批量管理
# 终止所有Python进程 pkill -f python # 终止特定用户进程 pkill -u www-data # 按CPU使用率终止 ps aux --sort=-%cpu | head -10
安全操作
# 确认进程信息后终止 ps -p 1234 -o pid,ppid,cmd kill 1234 # 使用timeout防止hang住 timeout 10s kill 1234 # 检查终止结果 kill 1234 && echo "成功" || echo "失败"
最佳实践: 优先使用 kill -15(SIGTERM)给进程机会清理资源 等待几秒后,如果进程仍未终止,再使用 kill -9 对于服务进程,优先使用服务管理命令如 systemctl 在生产环境中,操作前务必确认进程PID和影响范围
案例1:处理僵尸进程
# 查找僵尸进程
ps aux | awk '$8 ~ /^Z/ { print $2, $11 }'
# 找到父进程并重启
ps -eo pid,ppid,state,comm | grep Z
kill -HUP 父进程PID案例2:释放端口占用
# 查找占用80端口的进程 lsof -i :80 netstat -tlnp | grep :80 # 终止占用进程 kill -9 $(lsof -t -i:80)
案例3:批量清理进程
# 清理所有超过1小时的Chrome进程
ps -eo pid,etime,comm | awk '/chrome/ && $2 > "01:00:00" {print $1}' | xargs kill
# 清理高内存占用进程
ps aux --sort=-%mem | head -5 | awk 'NR>1 && $4>10.0 {print $2}' | xargs kill -15