揭秘Linux后臺作業都知道的一些知識
Linux的基礎操作,旨在讓讀者對Linux有個初步的認識。Linux經過發展,這里解說Linux后臺了,這里我發表一下個人理解,和大家討論討論。從操作系統的角度來講,作業是計算機系統中運行的一項用戶任務。在unix/linux系統中作業可以定義為:在命令行中輸入的一個或一組命令。
由于linux是一個真正的多用戶多任務的操作系統,所以可以同時運行多個任務,但是在前臺啟動一個作業時,標準輸入和標準輸出都被鎖定,它們被當前作業所獨占,直至該作業結束。為此,linux定義了兩種類型的作業:前臺作業和Linux后臺作業。
前臺作業
我們一般在終端執行的程序都是前臺作業,在它運行過程中無法啟動其他作業,啟動前臺作業也相當簡單,輸入命令然后回車。
◆掛起一個前臺作業為了掛起一個前臺作業,只需按下Ctrl+z。這個在我們處于全屏編輯模式下很有用,可以掛起編輯作業,完成其他任務。這樣回到終端后,我們執行jobs -l就可以查看被掛起的作業的相關信息。
◆恢復一個被掛起的作業恢復一個掛起的作業,只需在終端執行前臺命令fg。
◆終止一個前臺作業終止一個前臺作業,只需按下Ctrl+c,作業終止后,鍵入回車激活命令行提示符。
Linux后臺作業
當一個作業需要占用較長時間的時候也許我們需要Linux后臺運行該命令以完成其他的任務。
◆啟動一個Linux后臺作業啟動一個Linux后臺作業,只需在命令的后面加上符號&。特別注意,如果該作業有參數,則&號緊跟在***一個參數之后。命令結尾與&之間不留空格。需要注意的是,前臺作業和Linux后臺作業是共享鍵盤,顯示器等資源的,Linux后臺作業和前臺作業為了分的CPU時間片是要競爭競爭,所以Linux后臺作業發送給顯示器的任何消息因此將與來自當前作業的消息混在一起,這可能很快變的很混亂。一個Linux后臺作業要請求用戶輸入必須將之移到前臺。強烈建議Linux后臺作業的輸入和輸出必須重定向,***將終端輸出重定向文件或者null設備。你可以試試不帶參數的Linux后臺ping命令,例如ping localhost&,呵呵,等著閃屏吧!
◆掛起,重啟,終止Linux后臺作業為了掛起一個Linux后臺作業用stop命令,重啟用bg命令,終止用kill命令。三種命令都需要一個%號大頭的作業號,作業號可以用jobs查看
◆作業前Linux后臺狀態切換一個被掛起的作業可以在前臺和Linux后臺狀態間切換。一旦作業被掛起,就可以使用bg命令將作業起到Linux后臺執行。移動一個Linux后臺任務到前臺自然用fg命令了。
◆多Linux后臺作業當多個Linux后臺作業運行時,需要用到作業號,用以標示想要處理的作業。
作業隊列
使用jobs [-l]命令可以查看當前作業及其狀態。每個作業有相應的作業號,當前值,運行狀態。
◆當前值作業列表中的+號,-號稱為當前值標志。+號說明改作業位當前默認作業,-號說明當前默認作業完成后將替代當前默認作業。這里=,-號倒是有點進程優先級的味道了。當一個作業被掛起就地動稱為默認的當前值標志,如果多個作業被掛起則按照掛起的順序一次賦予相應的標識值,***掛起的為加號,較早的為減號,按優先級理解起來很容易明白。
◆使用作業號前面提到的幾個命令都可以加上作業號參數。作業號有%號開頭,并與命令之間有一空格隔開。默認作業號可表示位:%+,或者%%,包含減號當前值的作業可用%-表示。例如結束當前默認作業:kill %%或者kill %+。
◆作業狀態生命周期一個作業可能處于三種狀態之一:前臺,Linux后臺,掛起。當一個作業啟動,它在前臺運行,在運行期間作業可以被掛起,終止它,或者運行直至自動結束掉。掛起的作業也可轉到Linux后臺繼續執行。一個作業從創建到結束完全可以在人工干預下執行,我們可以更好的控制自己的作業任務,以便是Linux更好的為我們服務我們也可以提高工作效率。
本文講的都是淺顯的概念問題,所以關鍵還是要靠自己實踐。當然,這只是給新手的參考,高手們就可以路過了!
【編輯推薦】