深度講解Unix操作系統(tǒng)程指
Unix操作系統(tǒng)中的進(jìn)程指的是一個(gè)具有特定功能的程序,它可以和其他程序共享對(duì)某個(gè)數(shù)據(jù)集合的操作。進(jìn)程被應(yīng)用程序創(chuàng)建之后,在獲得資源時(shí)運(yùn)行。如果得不到資源,就暫時(shí)停止直到獲得其所需要的資源。進(jìn)程完成后消忙。故進(jìn)程與普通程序仍然有所差別。
把前臺(tái)進(jìn)程移動(dòng)到后臺(tái)去進(jìn)行
有時(shí)候出于某些特定的需要,系統(tǒng)工程師可能要把某些在前臺(tái)運(yùn)行的進(jìn)程放入到后臺(tái)去運(yùn)行。一個(gè)比較感性的例子,就如殺毒軟件。全盤殺毒需要比較長的時(shí)間。若哪個(gè)殺毒的窗口老是用戶眼前晃的話,讓人很不舒服。為此系統(tǒng)工程師就需要考慮把這個(gè)前臺(tái)正在運(yùn)行的進(jìn)程放入到后臺(tái)運(yùn)行。在Unix操作系統(tǒng)中,這個(gè)功能經(jīng)常用到。如工程師可能讓系統(tǒng)每天在一個(gè)固定的時(shí)刻對(duì)Home用戶文件夾進(jìn)行備份。
為了避免對(duì)用戶的干擾,可以把這個(gè)備份進(jìn)程放在后臺(tái)執(zhí)行。故Unix操作系統(tǒng)工程師要掌握把前臺(tái)進(jìn)程放入到后臺(tái)執(zhí)行、把后臺(tái)作業(yè)調(diào)入到前臺(tái)等等相關(guān)操作,并能夠排除由此產(chǎn)生的一些錯(cuò)誤。這也是Unix操作系統(tǒng)高級(jí)工程師考試時(shí)的必備考點(diǎn)之一。
1、如何把前臺(tái)作業(yè)移動(dòng)到后臺(tái)?
如果為了在運(yùn)行進(jìn)程時(shí)可以進(jìn)行其他工作,工程師可以讓某個(gè)進(jìn)程在后臺(tái)執(zhí)行。注意如果把進(jìn)程放入到后臺(tái)運(yùn)行,則系統(tǒng)當(dāng)前運(yùn)行的shell會(huì)給這個(gè)進(jìn)程分配一個(gè)作業(yè)號(hào)。注意,由于作業(yè)號(hào)不是操作系統(tǒng)分配的,而是shell分配的,故它只代表了后臺(tái)運(yùn)行的活動(dòng)進(jìn)程。最要命的是,它在操作系統(tǒng)中并不是唯一的。
若要把一個(gè)正在執(zhí)行的進(jìn)程放入到后臺(tái),則首先需要把正在執(zhí)行的進(jìn)程掛起。系統(tǒng)工程師若要把正在執(zhí)行的進(jìn)程掛起的話,可以采用掛起鍵。工程師可以在進(jìn)程執(zhí)行過程中,暫停他的執(zhí)行過程,并在以后繼續(xù)執(zhí)行。
這個(gè)操作在Unix操作系統(tǒng)中叫做掛起。通稱情況下,系統(tǒng)工程師之能夠掛起一個(gè)當(dāng)前shell下的作業(yè)(不過這對(duì)系統(tǒng)工程師來說已經(jīng)足夠了)。掛起作業(yè)的方法主要有兩種,一是按CTRL+Z鍵,二是按系統(tǒng)當(dāng)前定義的掛起建。把進(jìn)程掛起后再使用bg命令把掛起的進(jìn)程放入到后臺(tái)運(yùn)行。這個(gè)命令的格式為,bg % 進(jìn)程標(biāo)示號(hào)或者作業(yè)號(hào)、命令名等等。筆者這里建議是采用進(jìn)程的標(biāo)識(shí)號(hào),而不是作業(yè)號(hào)。因?yàn)樽鳂I(yè)號(hào)在系統(tǒng)中并不唯一。故可能會(huì)引發(fā)一些誤操作。
2、如何把后臺(tái)作業(yè)移動(dòng)到前臺(tái)?
有時(shí)候管理員需要把后臺(tái)進(jìn)程移動(dòng)到前臺(tái)。如系統(tǒng)工程師發(fā)現(xiàn)后臺(tái)進(jìn)程遲遲沒有完成,懷疑這個(gè)進(jìn)程有問題,需要手工關(guān)閉它。通常情況下,系統(tǒng)工程師是無法強(qiáng)制關(guān)閉后臺(tái)進(jìn)程的。若要關(guān)閉后臺(tái)進(jìn)程,必須先把后臺(tái)進(jìn)程移動(dòng)到前臺(tái),然后再用關(guān)閉進(jìn)程命令關(guān)閉。也就是說,為了中斷一個(gè)后臺(tái)作業(yè),可以先把它移動(dòng)到前臺(tái),然后再使用前臺(tái)中的中斷控制進(jìn)程指令來實(shí)現(xiàn)。
把后臺(tái)進(jìn)程作業(yè)移動(dòng)到前臺(tái)的命令是fg,后接%標(biāo)志,然后指名進(jìn)程標(biāo)識(shí)號(hào)或者命名命名、作業(yè)號(hào)等等。在執(zhí)行這個(gè)命令的時(shí)候,筆者說明兩點(diǎn)。一是把后臺(tái)作業(yè)移動(dòng)到前臺(tái)與把前臺(tái)作業(yè)移動(dòng)到后臺(tái)有一個(gè)顯著的區(qū)別。就是把后臺(tái)作移動(dòng)到前臺(tái)不用把后臺(tái)正在執(zhí)行的進(jìn)程移動(dòng)到前臺(tái)。換句話說,在后臺(tái)執(zhí)行的進(jìn)程系統(tǒng)工程師無法進(jìn)行干預(yù)。即無法殺死進(jìn)程,也無法掛起進(jìn)程。
除非等著進(jìn)程自動(dòng)執(zhí)行完畢,否則的話工程師對(duì)于后臺(tái)的進(jìn)程無能為力。二是由于作業(yè)號(hào)在系統(tǒng)中不唯一,故利用作業(yè)號(hào)來管理后臺(tái)進(jìn)程并不是很好的方法。如現(xiàn)在恰巧有兩個(gè)作業(yè)號(hào)相同的后臺(tái)進(jìn)程,那么當(dāng)Unix操作系統(tǒng)工程師要把某個(gè)作業(yè)號(hào)的進(jìn)程掉到前臺(tái)運(yùn)行的時(shí)候,系統(tǒng)就不知道到底要調(diào)哪一個(gè)了。故筆者是建議大家通過唯一的進(jìn)程標(biāo)識(shí)號(hào)來管理后臺(tái)進(jìn)程。
3、如何查看正在運(yùn)行的作業(yè)?
當(dāng)系統(tǒng)工程師發(fā)現(xiàn)把進(jìn)程放入后臺(tái)后遲遲沒有反應(yīng),就會(huì)擔(dān)心是否哪里出了問題,就需要查看當(dāng)前進(jìn)程的工作狀態(tài)。此時(shí)系統(tǒng)工程師可以通過jobs命令顯示當(dāng)前進(jìn)程的工作狀態(tài)。通常情況下,顯示進(jìn)程的狀態(tài)主要為運(yùn)行、中斷、等待輸入或者停止。如果進(jìn)程的狀態(tài)為后面三種,則系統(tǒng)工程師就要把它們調(diào)入到前臺(tái),來分析進(jìn)程遇到的問題。
這次,關(guān)于Unix操作系統(tǒng)把前臺(tái)進(jìn)程移動(dòng)到后臺(tái)去進(jìn)行的教學(xué)就到這里了。
【編輯推薦】