從作業系統的角度來講,作業是電腦系統中啟動並執行一項使用者任務。在unix/linux系統中作業可以定義為:在命令列中輸入的一個或一組命令。 由於linux是一個真正的多使用者多任務的作業系統,所以可以同時運行多個任務,但是在前台啟動一個作業時,標準輸入和標準輸出都被鎖定,它們被當前作業所獨佔,直至該作業結束。為此,linux定義了兩種類型的作業:前台作業和後台作業。 一 前台作業 我們一般在終端執行的程式都是前台作業,在它運行過程中無法啟動其他作業,啟動前台作業也相當簡單,輸入命令然後斷行符號。 ★掛起一個前台作業 為了掛起一個前台作業,只需按下Ctrl+z。這個在我們處於全屏編輯模式下很有用,可以掛起編輯作業,完成其他任務。這樣回到終端後,我們執行jobs -l就可以 查看被掛起的作業的相關資訊。 ★恢複一個被掛起的作業 恢複一個掛起的作業,只需在終端執行前台命令fg。 ★終止一個前台作業 終止一個前台作業,只需按下Ctrl+c,作業終止後,鍵入斷行符號啟用命令列提示符。 二 後台作業 當一個作業需要佔用較長時間的時候也許我們需要後台運行該命令以完成其他的任務。 ★啟動一個後台作業 啟動一個後台作業,只需在命令的後面加上符號&。特別注意,如果該作業有參數,則&號緊跟在最後一個參數之後。命令結尾與&之間不留空格。
需要注意的是,前台作業和後台作業是共用鍵盤,顯示器等資源的,後台作業和前台作業為了分的CPU時間片是要競爭競爭,所以後台作業發送給顯示器的任何訊息因此將與來自當前作業的訊息混在一起,這可能很快變的很混亂。一個後台作業要請求使用者輸入必須將之移到前台。強烈建議後台作業的輸入和輸出必須重新導向,最好將終端輸出重新導向檔案或者null裝置。你可以試試不帶參數的後台ping命令,例如ping localhost&,呵呵,等著閃屏吧!
★掛起,重啟,終止後台作業 為了掛起一個後台作業用stop命令,重啟用bg命令,終止用kill命令。三種命令都需要一個%號大頭的作業號,作業號可以用jobs查看 ★作業前後台狀態切換 一個被掛起的作業可以在前台和後台狀態間切換。一旦作業被掛起,就可以使用bg命令將作業起到後台執行。移動一個背景工作到前台自然用fg命令了。 ★多後台作業 當多個後台作業運行時,需要用到作業號,用以標示想要處理的作業。 三作業隊列 使用jobs [-l]命令可以查看當前作業及其狀態。每個作業有相應的作業號,當前值,運行狀態。 ★當前值 作業列表中的+號,-號稱為當前值標誌。+號說明改作業位當前預設作業,-號說明當前預設作業完成後將替代當前預設作業。這裡=,-號倒是有點進程優先順序 的味道了。當一個作業被掛起就地動稱為預設的當前值標誌,如果多個作業被掛起則按照掛起的順序一次賦予相應的標識值,最先掛起的為加號,較早的為減號,按優先順序理解起來很容易明白。 ★使用作業號 前面提到的幾個命令都可以加上作業號參數。作業號有%號開頭,並與命令之間有一空格隔開。預設作業號可表示位:%+,或者%%,包含減號當前值的作業可用%-表示。例如結束當前預設作業:kill %%或者kill %+。 ★作業狀態生命週期 一個作業可能處於三種狀態之一:前台,後台,掛起。當一個作業啟動,它在前台運行,在運行期間作業可以被掛起,終止它,或者運行直至自動結束掉。掛起的作業也可轉到後台繼續執行。一個作業從建立到結束完全可以在人工幹預下執行,我們可以更好的控制自己的作業任務,以便是Linux更好的為我們服務我們也可以提高工作效率。 本文講的都是淺顯的概念問題,所以關鍵還是要靠自己實踐。當然,這隻是給新手的參考,高手們就可以路過了! |