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
我是个新的 Linux/Unix 用户。我该如何在 Linux 或类 Unix 系统中使用 BASH/KSH/TCSH 或者基于 POSIX 的 shell 来查看当前正在进行的作业（job）？在 Unix/Linux 上怎样显示当前作业的状态？(LCTT 译注：job，也常称为任务) 作业控制是一种能力，可以停止/暂停进程（命令）的执行并按你的要求继续/恢复它们的执行。这是通过你的操作系统和诸如 bash/ksh 或 POSIX shell 等 shell 来执行的。  shell 会将当前所执行的作业保存在一个表中，可以用 jobs 命令来显示。 用途  在当前 shell 会话中显示作业的状态。  语法 其基本语法如下: jobs
我是个新的 Linux/Unix 用户。我该如何在 Linux 或类 Unix 系统中使用 BASH/KSH/TCSH 或者基于 POSIX 的 shell 来查看当前正在进行的<ruby> 作业 <rp>  （ </rp> <rt>  job </rt> <rp>  ） </rp></ruby>？在 Unix/Linux 上怎样显示当前作业的状态？(LCTT 译注：job，也常称为“任务”)


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


![](/data/attachment/album/201601/17/114908e8fzj8q3bno44hjk.jpg)


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** 键来<ruby> 挂起 <rp>  （ </rp> <rt>  suspend </rt> <rp>  ） </rp></ruby> 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: Displaying the status of jobs in the shell](/data/attachment/album/201601/17/114918bokfcomos8d9umgg.jpg)


*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)](http://www.manpager.com/linux/man1/bash.1.html) 命令 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 作业。




---


via: <http://www.cyberciti.biz/faq/unix-linux-jobs-command-examples-usage-syntax/>


作者：Vivek Gite 译者：[strugglingyouth](https://github.com/strugglingyouth) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

