一.多任務
UNIX可以同時做很多的事情,在多個任務之間輪流分配處理器的處理時間進行的如此之快,以至於所有事情看起來都像是同時執行的。這就被稱作多任務。
大多數UNIX系統允許在同一個終端中運行多個程序,這被稱作作業控制。該機制可以向沒有窗口的用戶提供只有窗口系統纔有的好處。但是即使運行窗口系統,你也許希望使用作業控制在同一終端窗口中做多件事情。比如,你也許喜歡在一個終端窗口中做大部分工作,而不是使整個桌面佈滿窗口。
爲什麼需要作業控制?假設你運行一個需要很長處理時間的程序。在諸如MS-DOS之類的單任務操作系統中,你需要輸入該命令,等系統提示符出現後纔可以輸入新命令。然而,在UNIX系統中,你可以在“前臺”輸入新命令,同時在“後臺”運行多個程序。
當輸入某命令作爲後臺進程時,shell提示符會很快重新出現,以便你輸入新命令。
1.在後臺運行命令
爲了在後臺運行某程序,應該在按下return前在命令的末尾加&字符,然後shell會分配和顯示該進程的ID號。
如:sort bigfile >bigfile.sort &
也可以使用CTRL+Z掛起在前臺運行的程序。然後使用bg命令或將掛起的程序放到後臺執行,fg命令可以使後臺運行的命令或被掛起的程序提升到前臺運行。
2.檢測進程
如果某後臺進程執行時間很長,或者你改變了主意,想停止某進程,則你可以檢測進程的狀態,甚至取消它。
0x01 ps
當輸入命令ps時,你可以獲得如下信息:進程運行時間,後臺進行的進程ID以及運行該進程的終端名稱。
基本形式下,ps會列出如下的信息:
進程ID(PID)
由UNIX爲進程指定的唯一號碼。
終端名(TTY)
啓動該進程的終端的UNIX名稱。
運行時間(TIME)
進程已經使用的計算機時間總量(以時分秒計算)。
命令(CMD)
進程的名稱。
0x02 jobs
該命令會列出從該shell啓動的後臺進程。
!!!注意!!!jobs 顯示的進程號只是表示進程的執行時間上的順序並不是UNIX的進程號,我就曾經 kill 1導致系統崩潰。
3. 取消進程
kill 命令可以終止進程。 該命令的格式爲
kill PID(s)
請配合ps命令使用kill命令確定自己要kill的進程的PID號正確。