天天看點

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.

繼續閱讀