UDN-企业互联网技术人气社区

板块导航

浏览  : 968
回复  : 0

[运维] Linux jobs 命令示例

[复制链接]
哥屋恩的头像 楼主
发表于 2016-10-10 16:33:22 | 显示全部楼层 |阅读模式
  我是个新的 Linux/Unix 用户。我该如何在 Linux 或类 Unix 系统中使用 BASH/KSH/TCSH 或者基于 POSIX 的 shell 来查看当前正在进行的作业(job)?在 Unix/Linux 上怎样显示当前作业的状态?(LCTT 译注:job,也常称为“任务”)

  作业控制是一种能力,可以停止/暂停进程(命令)的执行并按你的要求继续/恢复它们的执行。这是通过你的操作系统和诸如 bash/ksh 或 POSIX shell 等 shell 来执行的。

l.jpg


  shell 会将当前所执行的作业保存在一个表中,可以用 jobs 命令来显示。

  用途

  在当前 shell 会话中显示作业的状态。

  语法

  其基本语法如下:

 
  1.  jobs
复制代码

  或

 
  1.  jobs jobID
复制代码


  或者

  
  1. jobs [options] jobID
复制代码


  启动一些作业来进行示范

  在开始使用 jobs 命令前,你需要在系统上先启动多个作业。执行以下命令来启动作业:

  1.   ### 启动 xeyes, calculator, 和 gedit 文本编辑器 ###

  2.   xeyes &

  3.   gnome-calculator &

  4.   gedit fetch-stock-prices.py &
复制代码


  最后,在前台运行 ping 命令:

 
  1.  ping [url=www.cyberciti.biz]www.cyberciti.biz[/url]
复制代码


  按 Ctrl-Z 键来挂起(suspend) ping 命令的作业。

  jobs 命令示例

  要在当前 shell 显示作业的状态,请输入:

 
  1.  $ jobs
复制代码


  输出示例:

  1.   [1] 7895 Running gpass &

  2.   [2] 7906 Running gnome-calculator &

  3.   [3]- 7910 Running gedit fetch-stock-prices.py &

  4.   [4]+ 7946 Stopped ping cyberciti.biz
复制代码


  要显示名字以“p”开头的进程 ID 或作业名称,输入:

  
  1. $ jobs -p %p
复制代码

  或者

 
  1.  $ jobs %p
复制代码


  输出示例:

 
  1.  [4]- Stopped ping cyberciti.biz
复制代码


  字符 % 是一个指定任务的方法。在这个例子中,你可以使用作业名称开头字符串来来暂停它,如 %ping。

  如何显示进程 ID 不包含其他正常的信息?

  通过 jobs 命令的 -l(小写的 L)选项列出每个作业的详细信息,运行:

 
  1.  $ jobs -l
复制代码


  示例输出:

k.jpg


  Fig.01: 在 shell 中显示 jobs 的状态

  如何只列出最近一次状态改变的进程?

  首先,启动一个新的工作如下所示:

  
  1. $ sleep 100 &
复制代码


  现在,只显示自从上次提示过停止或退出之后的作业,输入:

 
  1.  $ jobs -n
复制代码

  示例输出:

 
  1.  [5]- Running sleep 100 &
复制代码

  仅显示进程 ID(PID)

  通过 jobs 命令的 -p 选项仅显示 PID:

  
  1. $ jobs -p
复制代码


  示例输出:

  1.   7895

  2.   7906

  3.   7910

  4.   7946

  5.   7949
复制代码


  怎样只显示正在运行的作业呢?

  通过 jobs 命令的 -r 选项只显示正在运行的作业,输入:

 
  1.  $ jobs -r
复制代码

  示例输出:

  
  1. [1] Running gpass &

  2.   [2] Running gnome-calculator &

  3.   [3]- Running gedit fetch-stock-prices.py &
复制代码


  怎样只显示已经停止工作的作业?

  通过 jobs 命令的 -s 选项只显示停止工作的作业,输入:

  
  1. $ jobs -s
复制代码


  示例输出:

 
  1.  [4]+ Stopped ping cyberciti.biz
复制代码

  要继续执行 ping cyberciti.biz 作业,输入以下 bg 命令:

  
  1. $ bg %4
复制代码


  jobs 命令选项

  摘自 bash(1) 命令 man 手册页:

  
选项
描述
-l
列出进程 ID 及其它信息。
-p
仅列出进程 ID。
-n
仅列出自从上次输出了状态变化提示(比如显示有进程退出)后的发生了状态变化的进程。
-r
仅显示运行中的作业。
-s
仅显示停止的作业。
-x
运行命令及其参数,并用新的命令的进程 ID 替代所匹配的原有作业的进程组 ID。

  关于 /usr/bin/jobs 和 shell 内建的说明

  输入以下 type 命令找出是否 jobs 命令是 shell 的内建命令或是外部命令还是都是:

  
  1. $ type -a jobs
复制代码

  输出示例:

 
  1.  jobs is a shell builtin

  2.   jobs is /usr/bin/jobs
复制代码


  在几乎所有情况下,你都需要使用 BASH/KSH/POSIX shell 内建的jobs 命令。/usr/bin/jobs 命令不能被用在当前 shell 中。/usr/bin/jobs 命令工作在不同的环境中,并不共享其父 bash/ksh 的 shell 作业。

原文作者:佚名  来源:开发者头条

相关帖子

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

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部