Linux jobs命令:查看和管理后台任务


一、jobs命令简介

jobs命令是job control(作业控制)的一部分,它可以显示当前shell中的后台作业(background jobs)的状态。
后台作业是指在后台运行的进程(process),它们不会占用前台的终端(terminal)。你可以使用&符号来将一个命令放到后台运行,例如 sleep 10 &
你也可以使用Ctrl+Z来暂停(suspend)一个前台的进程,并将它放到后台。
jobs命令可以让你查看后台作业的编号(job number)、进程号(process ID)、状态(status)和命令(command)。


二、jobs命令适用的Linux版本

jobs命令是一个shell内置命令(built-in command),它不需要安装,只要你的shell支持作业控制,就可以使用它。常见的shell,如bash、zsh、ksh、csh等都支持作业控制。可以使用echo $SHELL来查看你当前使用的shell。
在这里插入图片描述

如果你的shell不支持作业控制,你可以使用ps命令来查看后台进程的信息,或者使用top命令来监视进程的运行情况。


三、jobs命令的基本语法

jobs [选项] [作业号]

四、jobs命令的常用选项或参数

选项说明
-l显示进程号(process ID)
-n只显示上次shell通知后改变了状态的作业
-p只显示进程号
-r只显示正在运行的作业
-s只显示已停止的作业

五、jobs命令实例

5.1 显示当前shell中的后台作业

将命令放到后台

首先,运行命令将其放到后台:

sleep 10 &  
ping bashcommandnotfound.cn &  

这将使这两个命令在后台运行,shell 会显示类似于以下内容的消息:

[1] 12345  
[2] 12346

这里 [1] 和 [2] 是作业号,而 12345 和 12346 是进程号。

查看后台作业状态

使用 jobs 命令查看当前后台作业的状态:

jobs  

输出可能类似于:

[1]-  运行中               sleep 10 &
[2]+  运行中               ping bashcommandnotfound.cn &

这里:

“运行中” 表示作业是正在运行中的。
如果某个作业被暂停,它会显示为“已停止”。
作业号后面的 + 符号表示最近放到后台的作业,而 - 符号表示上一个作业。

将后台作业带到前台

如果你想将后台作业切换到前台,你可以使用 fg 命令。使用作业号来指定要切换的作业,例如:

fg %1  

或者

fg %2  

这里:

%1 表示作业号为 1 的作业(即 sleep 10)。
%2 表示作业号为 2 的作业(即 ping bashcommandnotfound.cn)。

备注

使用 fg 命令可以让你在需要与某个后台作业进行交互时,便利地将其转回前台。
如果你有多个后台作业,可以根据需要使用相应的作业号来进行切换。

5.2 显示后台作业的进程号

[linux@bashcommandnotfound.cn ~]$ jobs -l
[1]-  1234 运行中               sleep 10 &
[2]+  2345 运行中               ping bashcommandnotfound.cn &

Tips:

使用 -l 选项可以显示后台作业的进程号,这可以方便你使用kill命令来终止它们。

5.3 显示已停止的后台作业

[linux@bashcommandnotfound.cn ~]$ sleep 10
^Z
[1]+  已停止               sleep 10
[linux@bashcommandnotfound.cn ~]$ jobs -s
[1]+  已停止               sleep 10

Tips:

使用Ctrl+Z可以暂停一个前台的进程,并将它放到后台,shell会显示它的作业号和状态。
使用-s选项可以只显示已停止的后台作业,这可以方便你使用bg %1来将它们继续在后台运行。

5.4 显示上次shell通知后改变了状态的作业

[linux@bashcommandnotfound.cn ~]$ sleep 10 &
[1] 1234
[linux@bashcommandnotfound.cn ~]$ sleep 20 &
[2] 2345
[linux@bashcommandnotfound.cn ~]$ jobs -n
[1]-  运行中               sleep 10 &
[2]+  运行中               sleep 20 &
[linux@bashcommandnotfound.cn ~]$ jobs -n
[linux@bashcommandnotfound.cn ~]$ 
[1]-  已完成               sleep 10
[linux@bashcommandnotfound.cn ~]$ jobs -n
[1]-  已完成               sleep 10

Tips:

使用-n选项可以只显示上次shell通知后改变了状态的作业,例如从运行中变为已完成的作业。
如果没有作业改变了状态,jobs -n命令不会有任何输出。

5.5 显示正在运行的后台作业

[linux@bashcommandnotfound.cn ~]$ sleep 10 &
[1] 1234
[linux@bashcommandnotfound.cn ~]$ sleep 20 &
[2] 2345
[linux@bashcommandnotfound.cn ~]$ sleep 30 &
[3] 3456
[linux@bashcommandnotfound.cn ~]$ jobs -r
[1]   运行中               sleep 10 &
[2]-  运行中               sleep 20 &
[3]+  运行中               sleep 30 &

Tips:

使用-r选项可以只显示正在运行的后台作业,这可以方便你使用kill %n来终止它们。

5.6 显示后台作业的进程号和命令

[linux@bashcommandnotfound.cn ~]$ jobs -p
1234
2345
3456
[linux@bashcommandnotfound.cn ~]$ jobs -p | xargs ps -o pid,cmd
  PID CMD
 1234 sleep 10
 2345 sleep 20
 3456 sleep 30

Tips

使用-p选项可以只显示后台作业的进程号,这可以方便你使用管道(pipe)和其他命令来处理它们。
例如,你可以使用jobs -p | xargs ps -o pid,cmd来显示后台作业的进程号和命令。

5.7 使用作业号来指定后台作业

[linux@bashcommandnotfound.cn ~]$ jobs
[1]   运行中               sleep 10 &
[2]-  运行中               sleep 20 &
[3]+  运行中               sleep 30 &
[linux@bashcommandnotfound.cn ~]$ jobs %1
[1]   运行中               sleep 10 &
[linux@bashcommandnotfound.cn ~]$ jobs %2
[2]-  运行中               sleep 20 &
[linux@bashcommandnotfound.cn ~]$ jobs %3
[3]+  运行中               sleep 30 &

Tips

你可以使用%符号和作业号来指定后台作业,这可以方便你使用其他命令来操作它们。
例如,你可以使用jobs %n来显示指定的后台作业的状态,或者使用kill %n来终止它们。

六、Linux jobs相关命令

bg命令:在后台继续运行作业
fg命令:在前台继续运行作业
kill命令:终止进程
ps命令:显示进程信息
top命令:监视进程活动

七、 Linux jobs命令的注意事项

  • jobs命令只能显示当前shell中的后台作业,如果你在不同的shell中运行了不同的后台作业,你需要切换到相应的shell中才能查看它们。
  • jobs命令只能显示后台作业的状态,如果你想查看后台作业的输出,你可以使用tail -f命令来查看它们的输出文件,或者使用fg命令将它们切换到前台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值