10個Linux/Unix下Bash和KSH shell的作業(yè)控制實例
Linux 和 Unix 屬于多任務的操作系統(tǒng),也就是說一個系統(tǒng)在同一時間段內能運行多重任務(進程)。在這個新的博客系列,我將會列出相關的 Linux 和 Unix 作業(yè)(job)控制的命令,你可以通過這些命令在 Bash 或 Korn 還有 POSIX shell 下實現(xiàn)執(zhí)行多重任務。
什么是作業(yè)控制?
作業(yè)控制不只是能夠停止/掛起(stop/suspend)正在執(zhí)行的進程(命令),也可以繼續(xù)/喚醒(continue/resume)執(zhí)行你需要的每一個進程。這完全可以用你的操作系統(tǒng)和 bash/ksh 之類的 shell 或 POSIX shell 完成。
誰給作業(yè)控制的提供了環(huán)境?
Bash / Korn shell,或者是 POSIX shell 提供給了作業(yè)控制的環(huán)境。
跟作業(yè)表打個招呼吧
你的 shell 會留有一張當前作業(yè)的表單,稱為作業(yè)表。當你鍵入命令時,shell 會給它分配一個 jobID(也稱作 JOBSPEC)。一個 jobID 或 JOBSPEC只是很小的整數(shù)數(shù)值。
#1: 創(chuàng)建你的*** Linux/Unix 作業(yè)
我要運行一個名為 xeyes 的命令,它會在屏幕上顯示兩個橢圓的眼睛,輸入: $ xeyes &
輸出樣例:
Fig.01: 在后臺運行 xeyes 命令
我使用&符號讓一個 job 在后臺運行。shell 會打印一行信息類似如下:
- [1] 6891
在這個例子中,有兩個數(shù)字輸出,分別表示:
- 1 : 在后臺執(zhí)行的 xeyes 任務的作業(yè)號為 1。
- 6891 : 作業(yè)1的進程ID。
我在多執(zhí)行一些 job:
- ## 啟動一個文本編輯器,X 的系統(tǒng)負載顯示,和 sleep 命令 ##
- gedit /tmp/hello.c &
- xload &
- sleep 100000 &
#2: 列出當前的作業(yè)
- $ jobs
- $ jobs -l
輸出如下:
- [1] 9379 Running xeyes &
- [2] 9380 Running gedit /tmp/hello.c &
- [3]- 9420 Running xload &
- [4]+ 9421 Running sleep 100000 &
簡要描述如下:
你也可以用 ps 命名列出當前系統(tǒng)正在運行的進程:
- $ ps
#3: 停止或掛起正在運行的作業(yè)
按下[Ctrl]-[Z]鍵或使用kill 命令,如下所示:
- kill -s stop PID
舉個例子,啟動ping 命令,然后用 Ctrl-Z 鍵來停止 ping 命令作業(yè):
Animated gif 01: 掛起 ping 命令作業(yè)