|
Linux作為一個多任務(wù)環(huán)境,允許用戶同時執(zhí)行多項任務(wù),例如查看系統(tǒng)情況、備份資料、編輯文件和打印文件等。 對于耗時長的任務(wù)不應(yīng)該讓它在前臺任務(wù)中執(zhí)行,而應(yīng)該交給后臺任務(wù)去執(zhí)行。這樣前臺任務(wù)可繼續(xù)正常運作其它的操作,不用等待。示例如下: # find / -name testing & # fg 如果想要讓上面例子中的任務(wù)轉(zhuǎn)為后臺執(zhí)行,就使用“& ”。不過,由于是后臺執(zhí)行的,所以該程序的輸出并不會出現(xiàn)在屏幕上。當用戶將數(shù)個任務(wù)放到后臺任務(wù)執(zhí)行時,要如何去管理這些后臺任務(wù)?怎么知道后臺任務(wù)的執(zhí)行情況?如何終止或暫時停止后臺任務(wù)的執(zhí)行?下面就來逐一說明。 控制管理 舉例如下: # du -a /user > user.data & [1] 237 # find / -name core -type f -ls > core.data & [2] 238 如上通過“&”命令將三個任務(wù)放到后臺中執(zhí)行。用命令“jobs -l”顯示后臺任務(wù)的執(zhí)行情況,舉例如下: #jobs -l [1] + 237 Running du -a /user > user.data [2] - 238 Running find / -name core -type f -ls > core.data 首先介紹一個任務(wù)控制特有的名詞:當前任務(wù)。上面的當前任務(wù)是“du -a /user > user.data”,因為后臺任務(wù)號碼是“[1]”。如果當?shù)谝粋后臺任務(wù)順利執(zhí)行完畢,第二個后臺任務(wù)還在執(zhí)行中時,當前任務(wù)便會自動變成后臺任務(wù)號碼“[2]”的后臺任務(wù)。所以可以得出一點,即當前任務(wù)是會變動的。當用戶輸入“fg”、“bg”和“stop”等命令時,如果不加任何引號,則所變動的均是當前任務(wù)。 終止后臺任務(wù)
命令總是有出錯的時候。當出現(xiàn)這種情況時,用戶可用Shell的內(nèi)置命令“kill”來結(jié)束任務(wù)。假如想要結(jié)束后臺任務(wù)“du -a /user > user.data”,可以用下面的命令: # kill 237 # kill %1 其中,237為第一個后臺任務(wù)的PID號碼。如果想終止第二個后臺任務(wù),以下兩種方法均可: 方法一:#kill %2 方法二:# kill %- 執(zhí)行暫停任務(wù) Shell的內(nèi)置命令“stop”可用來暫停后臺任務(wù)。示例如下: stop % (停止第一個后臺任務(wù)的執(zhí)行) stop %n (停止第n個后臺任務(wù)的執(zhí)行) 了解命令“stop”的使用后,便可將想要停止的后臺任務(wù)暫停執(zhí)行。例如用戶要將一個年度報表用 “nroff”命令整理,因為文件量十分龐大,所以將它放到后臺中執(zhí)行。命令如下: #nroff -ms moonth[1-12].acct > year2003.acct & [4] 240 當命令處理到一半的時候發(fā)覺moonth12.acct文件是舊的需要更新,這時用“jobs”命令查看到后臺任務(wù)“[4]”還在執(zhí)行中,但無法知道命令已經(jīng)處理到哪一個月份。此時可輸入下面的命令,將后臺任務(wù)“[4]”先暫停執(zhí)行: #stop %4 然后查看文件year2003.acct的尾部判斷是否已經(jīng)處理到12月。如果還沒有執(zhí)行到,那么可以將moonth12.acct文件的資料更新,再用命令“bg”將已被暫時停止執(zhí)行的后臺任務(wù)“[4]”接著繼續(xù)執(zhí)行下去。這樣不但可更正錯誤文件,而且不用將已處理完的任務(wù)重新再執(zhí)行一次。 方便之處 前臺、后臺任務(wù)確實可以給日常操作帶來方便。因為,我們在日常操作中肯定會遇到同一時間要進行多個操作。這個時候如果不使用前臺任務(wù)和后臺任務(wù),那么將要花費很多時間。熟練運用前臺和后臺任務(wù)能達到“時”半功倍。 |