job control
因爲本週要學習進程的知識點,在上週末的時候自己就想提前去了解下,於是我便拿起鳥哥看了關於進程管理方面的一些講解,收穫頗多。
首先我來解釋下“工作管理”。這個工作管理(job control)是用在bash環境下,也就是說:當我們登錄系統取得bash shell之後,在單一終端機下同時進行多個工作的行爲管理。在這裏我主要談談關於工作管理方面的收穫。
1> 直接將命令丟到後臺中執行的“&”:
我第一次見到這個命令的使用其實是前幾天,學長幫我聯網時他使用到了。
看看上面的圖片,你會發現執行命令之後,終端上出現了一箇中【1】,它被稱爲這個命令的一個工作號碼(job number)。而後面的數字3997就是這個命令所觸發的PID。
2> 將目前的工作丟到後臺中,並使其處於暫停狀態:Ctrl + z
這個命令在您執行一項工作之中,突然需要臨時切換查找一個東西,這時你就需要用到這個命令來協助你的工作。例如,在編輯一個*.c文件時,突然不瞭解某個函數 或者用到的某個文件的內容時,就需要將當前工作放在後臺並暫停。
看了上面的圖片信息,就是在執行了Ctrl + z 之後的顯示結果,【1】表示這是第一個工作,後面的加號+表示最近一個被丟進後臺的工作,且目前在後臺下默認會被 取用的那個工作(與下面談到fg這個命令)。中文提示信息“已停止”代表目前這個工作的狀態。
3> 查看目前的後臺工作狀態:jobs [-lrs]
下面的圖片是在上一步操作之後進行,因此顯示只有當前一個後臺工作,狀態爲停止。
在這裏再說說它的參數含義:
-l :除了列出job number 與命令串之外,同時列出PID的號碼;
-r :僅列出正在後臺run的工作。
-s :僅列出正在後臺當中暫停的工作。
4> 將後臺工作拿到前臺來進行處理:fg
sweetheart@sweetheart-LU410:~$ fg %jobnumber
參數:
%jobnumber : jobnumber爲工作號碼(數字)。
注:此時的%是可有可無的。
sweetheart@sweetheart-LU410:~$ jobs
[1]+ 3998 已停止 vim test.c
sweetheart@sweetheart-LU410:~$ fg
此時默認取出那個+的工作,即此時的[1]
5> 將工作在後臺的狀態變爲運行中:bg
前面我們講到Ctrl + z可以將目前的工作丟在後臺並暫停,那麼如何講一個工作在後臺狀態變爲運行running呢?
這時就需要用到命令:bg
注:這個命令在測試過程中需要進行的快一些,讀者可以在電腦上實現一下。
6> 管理後臺中的工作: kill
sweetheart@sweetheart-LU410:~$ kill -signal %jobnumber
參數:
-l: 列出目前kill能夠使用的信號( signal )有哪些
signal : 代表給予後面節的那個工作什麼樣的指示。
利用man 7 signal 可以得到:
-1:重新讀取一次參數的配置文件;
-2:代表與鍵盤輸入Ctrl + c同樣的操作;
-9:立刻強制刪除一個工作;
-15:以正常的程序方式終止一項工作,與-9是不一樣的。
注:以上只是我對這部分的一些命令的簡單陳述,詳細內容可以參考《鳥哥》第十七章的內容。