linux jobs 命令示例-亚博电竞手机版

我是个新的 linux/unix 用户。我该如何在 linux 或类 unix 系统中使用 bash/ksh/tcsh 或者基于 posix 的 shell 来查看当前正在进行的作业(job)?在 unix/linux 上怎样显示当前作业的状态?(lctt 译注:job,也常称为“任务”)

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

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

用途

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

语法

其基本语法如下:

jobs

jobs jobid

或者

jobs [options] jobid

启动一些作业来进行示范

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

### 启动 xeyes, calculator, 和 gedit 文本编辑器 ### xeyes & gnome-calculator & gedit fetch-stock-prices.py &

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

ping www.cyberciti.biz

ctrl-z 键来挂起(suspend) ping 命令的作业。

jobs 命令示例

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

$ jobs

输出示例:

[1]   7895 running                 gpass & [2]   7906 running                 gnome-calculator & [3]-  7910 running                 gedit fetch-stock-prices.py & [4]   7946 stopped                 ping cyberciti.biz

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

$ jobs -p %p

或者

$ jobs %p

输出示例:

[4]-  stopped                 ping cyberciti.biz

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

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

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

$ jobs -l

示例输出:

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

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

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

$ sleep 100 &

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

$ jobs -n

示例输出:

[5]-  running                 sleep 100 &

仅显示进程 id(pid)

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

$ jobs -p

示例输出:

7895 7906 7910 7946 7949

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

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

$ jobs -r

示例输出:

[1]   running                 gpass & [2]   running                 gnome-calculator & [3]-  running                 gedit fetch-stock-prices.py &

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

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

$ jobs -s

示例输出:

[4]   stopped                 ping cyberciti.biz

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

$ bg %4

jobs 命令选项

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

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

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

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

$ type -a jobs

输出示例:

jobs is a shell builtin jobs is /usr/bin/jobs

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

展开全文
内容来源于互联网和用户投稿,文章中一旦含有亚博电竞手机版的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系亚博电竞手机版删除

最新文章

知识分享
前言:在入门级mpv市场中,来自东风郑州日产的帅客绝对算得上是一名老将了,从上市至今一直保...…
知识分享
说到硬派越野,想必大家都非常熟悉了,尤其是近几年更是异常的火爆,市场前景也是非常的广阔。近...…
知识分享
当前里程:6998公里当前油耗:7.00l/100km油耗:三保过了一段时间了,也是在4s...…
知识分享
说到德系车,我们往往能想到的就是大众,大众汽车的燃油经济性不错,新车的故障率也比较低,而且...…
网站地图