活學(xué)活用Linux操作系統(tǒng)的后臺(tái)任務(wù)
Linux作為一個(gè)多任務(wù)環(huán)境,允許用戶同時(shí)執(zhí)行多項(xiàng)任務(wù),例如查看系統(tǒng)情況、備份資料、編輯文件和打印文件等。
對(duì)于耗時(shí)長(zhǎng)的任務(wù)不應(yīng)該讓它在前臺(tái)任務(wù)中執(zhí)行,而應(yīng)該交給后臺(tái)任務(wù)去執(zhí)行。這樣前臺(tái)任務(wù)可繼續(xù)正常運(yùn)作其它的操作,不用等待。示例如下:
# find / -name testing &
# fg
如果想要讓上面例子中的任務(wù)轉(zhuǎn)為后臺(tái)執(zhí)行,就運(yùn)用 “& ”。不過(guò),由于是后臺(tái)執(zhí)行的,所以該程序的輸出并不會(huì)出現(xiàn)在屏幕上。當(dāng)用戶將數(shù)個(gè)任務(wù)放到后臺(tái)任務(wù)執(zhí)行時(shí),要如何去管理這些后臺(tái)任務(wù)?如何知道后臺(tái)任務(wù)的執(zhí)行情況?如何 終止或暫時(shí)停止后臺(tái)任務(wù)的執(zhí)行?下面就來(lái)逐一說(shuō)明。
控制管理
舉例如下:# du -a /user > user.data &
[1] 237
# find / -name core -type f -ls > core.data &
[2] 238
如上通過(guò)“&”命令將三個(gè)任務(wù)放到后臺(tái)中執(zhí)行。用命令“jobs -l”顯示后臺(tái)任務(wù)的執(zhí)行情況,舉例如下:
#jobs -l
[1] + 237 Running du -a /user > user.data
[2] - 238 Running find / -name core -type f -ls > core.data
首先介紹一個(gè)任務(wù)控制特有的名詞:當(dāng)前任務(wù)。上面的當(dāng)前任務(wù)是“du -a /user > user.data”,因?yàn)楹笈_(tái)任務(wù)號(hào)碼是“[1]”。如果當(dāng)***個(gè)后臺(tái)任務(wù)順利執(zhí)行完畢,第二個(gè)后臺(tái)任務(wù)還在執(zhí)行中時(shí),當(dāng)前任務(wù)便會(huì)自動(dòng)變成后臺(tái)任務(wù)號(hào)碼“[2]”的后臺(tái)任務(wù)。所以可以得出一點(diǎn),即當(dāng)前任務(wù)是會(huì)變動(dòng)的。當(dāng)用戶輸入“fg”、“bg”和“stop”等命令時(shí),如果不加任何引號(hào),則所變動(dòng)的均是當(dāng)前任務(wù)。
終止后臺(tái)任務(wù)
命令總是有出錯(cuò)的時(shí)候。當(dāng)出現(xiàn)這種情況時(shí),用戶可用Shell的內(nèi)置命令“kill”來(lái)結(jié)束任務(wù)。假如想要結(jié)束后臺(tái)任務(wù)“du -a /user > user.data”,可以用下面的命令:# kill 237
# kill %1
其中,237為***個(gè)后臺(tái)任務(wù)的PID號(hào)碼。如果想終止第二個(gè)后臺(tái)任務(wù),以下兩種要領(lǐng)均可:
要領(lǐng)一:#kill %2
要領(lǐng)二:# kill %-
【編輯推薦】