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