天天看点

jobs 命令示例jobs 命令示例

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

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

jobs 命令示例jobs 命令示例

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

<a></a>

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

其基本语法如下:

<code>jobs</code>

<code>jobs jobid</code>

或者

<code>jobs [options] jobid</code>

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

<code>### 启动 xeyes, calculator, 和 gedit 文本编辑器 ###</code>

<code>xeyes &amp;</code>

<code>gnome-calculator &amp;</code>

<code>gedit fetch-stock-prices.py &amp;</code>

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

<code>ping www.cyberciti.biz</code>

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

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

<code>$ jobs</code>

输出示例:

<code>[1] 7895 running gpass &amp;</code>

<code>[2] 7906 running gnome-calculator &amp;</code>

<code>[3]- 7910 running gedit fetch-stock-prices.py &amp;</code>

<code>[4]+ 7946 stopped ping cyberciti.biz</code>

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

<code>$ jobs -p %p</code>

<code>$ jobs %p</code>

<code>[4]- stopped ping cyberciti.biz</code>

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

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

<code>$ jobs -l</code>

示例输出:

jobs 命令示例jobs 命令示例

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

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

<code>$ sleep 100 &amp;</code>

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

<code>$ jobs -n</code>

<code>[5]- running sleep 100 &amp;</code>

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

<code>$ jobs -p</code>

<code>7895</code>

<code>7906</code>

<code>7910</code>

<code>7946</code>

<code>7949</code>

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

<code>$ jobs -r</code>

<code>[1] running gpass &amp;</code>

<code>[2] running gnome-calculator &amp;</code>

<code>[3]- running gedit fetch-stock-prices.py &amp;</code>

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

<code>$ jobs -s</code>

<code>[4]+ stopped ping cyberciti.biz</code>

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

<code>$ bg %4</code>

选项

描述

<code>-l</code>

列出进程 id 及其它信息。

<code>-p</code>

仅列出进程 id。

<code>-n</code>

仅列出自从上次输出了状态变化提示(比如显示有进程退出)后的发生了状态变化的进程。

<code>-r</code>

仅显示运行中的作业。

<code>-s</code>

仅显示停止的作业。

<code>-x</code>

运行命令及其参数,并用新的命令的进程 id 替代所匹配的原有作业的进程组 id。

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

<code>$ type -a jobs</code>

<code>jobs is a shell builtin</code>

<code>jobs is /usr/bin/jobs</code>

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

文来自云栖社区合作伙伴“linux中国”

原文发布时间为:2013-04-02.

继续阅读