快速终止方法
Ctrl + C(前台进程)
- 如果脚本正在终端前台运行(直接可见输出):
- 按下组合键
Ctrl + C
立即终止进程。 - 适用场景:脚本卡死或需手动中断。
- 按下组合键
Ctrl + Z + kill(暂停后终止)
- 若
Ctrl + C
无效:- 按
Ctrl + Z
暂停进程。 - 输入
jobs
查看暂停任务的编号(如[1]
)。 - 终止任务:
kill %1 # 将1替换为实际任务编号
- 按
通过进程ID(PID)终止
查找进程PID
-
打开新终端,使用
ps
或pgrep
定位进程:ps aux | grep "脚本名" # ps aux | grep test.sh
- 输出第二列为PID(如
12345
)。
- 输出第二列为PID(如
-
或直接使用:
pgrep -f "脚本名" # pgrep -f test.sh
用 kill 命令终止
- 根据PID发送终止信号:
kill PID # 默认发送SIGTERM(15),允许进程清理退出
- 若进程未响应:
kill -9 PID # 发送SIGKILL(9)强制终止(慎用)
批量终止相关进程
终止同一脚本的所有进程
pkill -f "脚本名" # pkill -f test.sh
- 或使用
killall
:killall -9 sh # 终止所有sh进程(谨慎!可能影响其他脚本)
终止子进程
- 若脚本启动了子进程(如
sleep
):pkill -P 父进程PID # 终止指定父进程的所有子进程
特殊场景处理
后台进程终止
- 启动时添加
&
的脚本(如sh test.sh &
):- 用
jobs
查看后台任务编号。 - 终止任务:
kill %任务编号 # 如 kill %1
- 用
进程无响应(僵尸进程)
- 若
kill -9
无效:- 重启系统或结束父进程(如终端)。
- 检查进程状态:
ps aux | grep defunct
注意事项
-
权限要求:
- 普通用户只能终止自己的进程。
- 系统进程需
sudo
权限:sudo kill -9 PID
-
信号区别:
SIGTERM(15)
:友好终止,允许保存数据。SIGKILL(9)
:强制终止,可能导致资源未释放(最后手段)。
-
生产环境慎用
kill -9
:- 可能引发数据损坏,优先尝试
kill
或pkill
。
- 可能引发数据损坏,优先尝试
总结步骤
- 尝试
Ctrl + C
→ 无效则用Ctrl + Z
+kill %任务号
。 - 查询PID:
ps aux | grep "关键词"
或pgrep -f "关键词"
。 - 终止进程:
kill PID
→ 顽固进程用kill -9 PID
。 - 批量操作:
pkill -f "脚本名"
。
引用说明参考Linux内核文档(kernel.org)及《Linux命令行与Shell脚本编程大全》中的进程管理规范,操作前请确认权限,避免误杀系统关键进程。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7470.html