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

打印 上一主题 下一主题

主题 1761|帖子 1761|积分 5283


一、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下令的根本语法

  1. jobs [选项] [作业号]
复制代码

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

选项阐明-l显示历程号(process ID)-n只显示上次shell通知后改变了状态的作业-p只显示历程号-r只显示正在运行的作业-s只显示已停止的作业
五、jobs下令实例

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

将下令放到后台

起首,运行下令将其放到后台:
  1. sleep 10 &  
  2. ping bashcommandnotfound.cn &  
复制代码
这将使这两个下令在后台运行,shell 会显示类似于以下内容的消息:
  1. [1] 12345  
  2. [2] 12346
复制代码
这里 [1] 和 [2] 是作业号,而 12345 和 12346 是历程号。
查看后台作业状态

使用 jobs 下令查看当前后台作业的状态:
  1. jobs  
复制代码
输出可能类似于:
  1. [1]-  运行中               sleep 10 &
  2. [2]+  运行中               ping bashcommandnotfound.cn &
复制代码
这里:
   “运行中” 表示作业是正在运行中的。
如果某个作业被停息,它会显示为“已停止”。
作业号后面的 + 符号表示近来放到后台的作业,而 - 符号表示上一个作业。
  将后台作业带到前台

如果你想将后台作业切换到前台,你可以使用 fg 下令。使用作业号来指定要切换的作业,例如:
  1. fg %1  
复制代码
大概
  1. fg %2  
复制代码
这里:
   %1 表示作业号为 1 的作业(即 sleep 10)。
%2 表示作业号为 2 的作业(即 ping bashcommandnotfound.cn)。
  备注
   使用 fg 下令可以让你在须要与某个后台作业进行交互时,便利地将其转回前台。
如果你有多个后台作业,可以根据须要使用相应的作业号来进行切换。
  5.2 显示后台作业的历程号

  1. [linux@bashcommandnotfound.cn ~]$ jobs -l
  2. [1]-  1234 运行中               sleep 10 &
  3. [2]+  2345 运行中               ping bashcommandnotfound.cn &
复制代码
Tips:
   使用 -l 选项可以显示后台作业的历程号,这可以方便你使用kill下令来终止它们。
  5.3 显示已停止的后台作业

  1. [linux@bashcommandnotfound.cn ~]$ sleep 10
  2. ^Z
  3. [1]+  已停止               sleep 10
  4. [linux@bashcommandnotfound.cn ~]$ jobs -s
  5. [1]+  已停止               sleep 10
复制代码
Tips:
   使用Ctrl+Z可以停息一个前台的历程,并将它放到后台,shell会显示它的作业号和状态。
使用-s选项可以只显示已停止的后台作业,这可以方便你使用bg %1来将它们继承在后台运行。
  5.4 显示上次shell通知后改变了状态的作业

  1. [linux@bashcommandnotfound.cn ~]$ sleep 10 &
  2. [1] 1234
  3. [linux@bashcommandnotfound.cn ~]$ sleep 20 &
  4. [2] 2345
  5. [linux@bashcommandnotfound.cn ~]$ jobs -n
  6. [1]-  运行中               sleep 10 &
  7. [2]+  运行中               sleep 20 &
  8. [linux@bashcommandnotfound.cn ~]$ jobs -n
  9. [linux@bashcommandnotfound.cn ~]$
  10. [1]-  已完成               sleep 10
  11. [linux@bashcommandnotfound.cn ~]$ jobs -n
  12. [1]-  已完成               sleep 10
复制代码
Tips:
   使用-n选项可以只显示上次shell通知后改变了状态的作业,例如从运行中变为已完成的作业。
如果没有作业改变了状态,jobs -n下令不会有任何输出。
  5.5 显示正在运行的后台作业

  1. [linux@bashcommandnotfound.cn ~]$ sleep 10 &
  2. [1] 1234
  3. [linux@bashcommandnotfound.cn ~]$ sleep 20 &
  4. [2] 2345
  5. [linux@bashcommandnotfound.cn ~]$ sleep 30 &
  6. [3] 3456
  7. [linux@bashcommandnotfound.cn ~]$ jobs -r
  8. [1]   运行中               sleep 10 &
  9. [2]-  运行中               sleep 20 &
  10. [3]+  运行中               sleep 30 &
复制代码
Tips:
   使用-r选项可以只显示正在运行的后台作业,这可以方便你使用kill %n来终止它们。
  5.6 显示后台作业的历程号和下令

  1. [linux@bashcommandnotfound.cn ~]$ jobs -p
  2. 1234
  3. 2345
  4. 3456
  5. [linux@bashcommandnotfound.cn ~]$ jobs -p | xargs ps -o pid,cmd
  6.   PID CMD
  7. 1234 sleep 10
  8. 2345 sleep 20
  9. 3456 sleep 30
复制代码
Tips
   使用-p选项可以只显示后台作业的历程号,这可以方便你使用管道(pipe)和其他下令来处置惩罚它们。
例如,你可以使用jobs -p | xargs ps -o pid,cmd来显示后台作业的历程号和下令。
  5.7 使用作业号来指定后台作业

  1. [linux@bashcommandnotfound.cn ~]$ jobs
  2. [1]   运行中               sleep 10 &
  3. [2]-  运行中               sleep 20 &
  4. [3]+  运行中               sleep 30 &
  5. [linux@bashcommandnotfound.cn ~]$ jobs %1
  6. [1]   运行中               sleep 10 &
  7. [linux@bashcommandnotfound.cn ~]$ jobs %2
  8. [2]-  运行中               sleep 20 &
  9. [linux@bashcommandnotfound.cn ~]$ jobs %3
  10. [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下令将它们切换到前台。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表