查看当前Jobs
停止前需确认任务ID:
jobs -l
输出示例:
[1] + 10234 Running ./long_script.sh & [2] - 10256 Stopped vim config.conf
[1]
:任务编号(Job ID)10234
:进程ID(PID)Running/Stopped
:任务状态
停止Jobs的4种方法
终止后台任务(推荐)
步骤:
① 将后台任务切换到前台:
fg %1 # %1对应jobs中的[1]
② 按 Ctrl + C
强制终止。
适用场景:任务可前台运行(如脚本、命令)。
直接发送终止信号
通过进程ID(PID)终止:
kill -9 10234 # -9表示SIGKILL强制终止
通过任务编号(Job ID)终止:
kill %1 # 终止任务[1]
注意:SIGKILL (-9)
会强制结束进程,可能导致数据丢失,优先尝试 SIGTERM (-15)
。
终止挂起(Stopped)的任务
若任务被挂起(如按了Ctrl+Z
):
kill -9 %2 # 终止任务[2]
批量终止所有Jobs
kill $(jobs -p) # 终止当前终端所有jobs
进阶操作
不同终止信号的区别
信号 | 命令示例 | 效果 |
---|---|---|
SIGTERM (15) |
kill -15 %1 |
温和终止(允许进程保存数据) |
SIGKILL (9) |
kill -9 %1 |
强制终止(立即结束) |
脱离终端的任务(nohup启动)
若任务通过 nohup
启动,需用 ps
查找PID:
ps aux | grep "script_name" kill 10234
注意事项
- 数据丢失风险:强制终止(
kill -9
)可能导致未保存数据损坏,优先尝试Ctrl+C
或kill -15
。 - 终端关闭影响:
- 未脱钩的任务(未用
nohup
/disown
)会随终端关闭终止。 - 脱钩任务需手动通过PID结束。
- 未脱钩的任务(未用
- 权限问题:普通用户只能终止自己的进程,系统级进程需
sudo
权限。
场景 | 推荐命令 |
---|---|
终止可前台运行的任务 | fg %n + Ctrl + C |
终止后台/挂起任务 | kill %n 或 kill -9 PID |
批量终止 | kill $(jobs -p) |
脱离终端的任务 | ps aux \| grep + kill PID |
引用说明: 参考Linux man手册(
man bash
、man kill
)及Ubuntu官方文档关于进程管理的说明,遵循POSIX标准,实践环境基于Linux kernel 5.4+。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9238.html