2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

unix 后臺(tái)進(jìn)程的管理

 秋風(fēng)00 2010-03-17
 【IT專家網(wǎng)獨(dú)家】Unix系統(tǒng)中的進(jìn)程指的是一個(gè)具有特定功能的程序,它可以和其他程序共享對某個(gè)數(shù)據(jù)集合的操作。進(jìn)程被應(yīng)用程序創(chuàng)建之后,在獲得資源時(shí)運(yùn)行。如果得不到資源,就暫時(shí)停止直到獲得其所需要的資源。進(jìn)程完成后消忙。故進(jìn)程與普通程序仍然有所差別。因?yàn)檫M(jìn)程是動(dòng)態(tài)的,而程序是靜態(tài)的概念。不過筆者覺得這些描述都不怎么直觀。筆者平時(shí)在跟大家交流過程中,都把Unxi進(jìn)程比喻為系統(tǒng)的守護(hù)神。他負(fù)責(zé)與系統(tǒng)CPU之間進(jìn)行通信并保障系統(tǒng)的正常運(yùn)行。

  雖然進(jìn)程是應(yīng)用軟件自動(dòng)產(chǎn)生的。但是系統(tǒng)工程師在必要的時(shí)候仍然要學(xué)會(huì)對系統(tǒng)進(jìn)程進(jìn)行調(diào)整。如把某些運(yùn)行時(shí)間比較久的進(jìn)程放入到后臺(tái)運(yùn)行等等。筆者這里就進(jìn)程管理這個(gè)話題,跟大家分享一下自己在這方面的管理經(jīng)驗(yàn)。

  一、如何查看進(jìn)程標(biāo)識(shí)?

  進(jìn)程創(chuàng)建之后,系統(tǒng)就會(huì)為其分配一個(gè)唯一的標(biāo)識(shí)。進(jìn)程表示的允許范圍是從0到65535的十進(jìn)制數(shù)字。通常情況下,進(jìn)程標(biāo)識(shí)是循環(huán)使用的。如果進(jìn)程標(biāo)識(shí)達(dá)到上界的話,將重新使用比較小的進(jìn)程號。進(jìn)程號在系統(tǒng)中的分配原則是必須唯一。所以即使是同一個(gè)應(yīng)用程序發(fā)起的進(jìn)程,發(fā)起時(shí)間不同其進(jìn)程號也不同。但是關(guān)于進(jìn)程的很多操作,都是針對進(jìn)程號來進(jìn)行的。如要把后臺(tái)的進(jìn)程調(diào)到前臺(tái)來或者人工殺死一個(gè)不用的進(jìn)程,都需要知道進(jìn)程標(biāo)識(shí)。故在進(jìn)程管理中,系統(tǒng)工程師首先要掌握的一個(gè)內(nèi)容就是如何查看系統(tǒng)的進(jìn)程號。

  在Unix系統(tǒng)中,可以使用ps –ef命令來查看系統(tǒng)中的所有進(jìn)程。輸入這個(gè)命令后,系統(tǒng)會(huì)顯示當(dāng)前系統(tǒng)中進(jìn)程的詳細(xì)信息。具體來說,會(huì)包括如下內(nèi)容。如UID表示這個(gè)進(jìn)程的所有者;PID表示進(jìn)程的標(biāo)識(shí);PPID表示父進(jìn)程的標(biāo)識(shí);TTY表示運(yùn)行進(jìn)程的終端;COMMMAND表示創(chuàng)建進(jìn)程的系統(tǒng)命令。

  作為一個(gè)合格的Unix系統(tǒng)工程師,要能夠從這些信息中得到以下有用的結(jié)論。

  一是子進(jìn)程與父進(jìn)程的關(guān)系。每個(gè)進(jìn)程都只有一個(gè)父進(jìn)程,但是可以有多個(gè)子進(jìn)程。創(chuàng)建其他進(jìn)程的進(jìn)程被稱為父進(jìn)程;而這個(gè)被創(chuàng)建的進(jìn)程就是子進(jìn)程。為什么要區(qū)分父子進(jìn)程呢?如現(xiàn)在系統(tǒng)有三個(gè)進(jìn)程,進(jìn)程號分別為1001,1002,1003。而進(jìn)程1003是有進(jìn)程1001創(chuàng)建的。也就是說進(jìn)程1001是進(jìn)程1003所創(chuàng)建的。此時(shí)如果由于某種原因手工殺死父進(jìn)程1001的話,那么它的子進(jìn)程也會(huì)被同時(shí)殺死或者說成為“孤兒進(jìn)程”。為此系統(tǒng)工程師在手工殺死進(jìn)程的時(shí)候,需要先判斷一下這個(gè)進(jìn)程是否還創(chuàng)建了其他子進(jìn)程。只有在確定這些子進(jìn)程的手工關(guān)閉不會(huì)對系統(tǒng)產(chǎn)生不利影響之后,系統(tǒng)工程師才能夠殺死父進(jìn)程。而父進(jìn)程與子進(jìn)程的明顯區(qū)別就在于進(jìn)程標(biāo)示號(PID)與父進(jìn)程標(biāo)識(shí)號(PPID)。如果子進(jìn)程創(chuàng)建成功,則系統(tǒng)fork進(jìn)程會(huì)將子進(jìn)程的PID傳給父進(jìn)程。故系統(tǒng)工程師要能夠根據(jù)進(jìn)程標(biāo)識(shí)號與父進(jìn)程標(biāo)識(shí)號來判斷誰是誰的父進(jìn)程;在手工關(guān)閉父進(jìn)程時(shí)要注意其創(chuàng)建的子進(jìn)程對系統(tǒng)是否會(huì)產(chǎn)生不利影響。

  二是系統(tǒng)創(chuàng)建的進(jìn)程不能夠被手工關(guān)閉。在Unix系統(tǒng)啟動(dòng)的時(shí)候,系統(tǒng)核心將創(chuàng)建sched進(jìn)程。然后這個(gè)進(jìn)程又會(huì)產(chǎn)生三個(gè)子進(jìn)程,分別為init進(jìn)程、vhard進(jìn)程和bdflush進(jìn)程。這個(gè)四個(gè)進(jìn)程的進(jìn)程標(biāo)示好分別為0、1、2、3。在核心調(diào)度程序?yàn)樗麄兎峙銫PU時(shí)間之前,shced把其他程序調(diào)度內(nèi)存。這里Unix系統(tǒng)工程師需要注意的是,不要去嘗試著維護(hù)這四個(gè)進(jìn)程,如不要想把這個(gè)四個(gè)進(jìn)程強(qiáng)制關(guān)閉掉。否則的話,工程師會(huì)吃不了兜著走。

  二、把前臺(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í)刻對Home用戶文件夾進(jìn)行備份。為了避免對用戶的干擾,可以把這個(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高級工程師考試時(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è)號。注意,由于作業(yè)號不是操作系統(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)工程師之能夠掛起一個(gè)當(dāng)前shell下的作業(yè)(不過這對系統(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)示號或者作業(yè)號、命令名等等。筆者這里建議是采用進(jìn)程的標(biāo)識(shí)號,而不是作業(yè)號。因?yàn)樽鳂I(yè)號在系統(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í)號或者命名命名、作業(yè)號等等。在執(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í)行完畢,否則的話工程師對于后臺(tái)的進(jìn)程無能為力。二是由于作業(yè)號在系統(tǒng)中不唯一,故利用作業(yè)號來管理后臺(tái)進(jìn)程并不是很好的方法。如現(xiàn)在恰巧有兩個(gè)作業(yè)號相同的后臺(tái)進(jìn)程,那么當(dāng)工程師要把某個(gè)作業(yè)號的進(jìn)程掉到前臺(tái)運(yùn)行的時(shí)候,系統(tǒng)就不知道到底要調(diào)哪一個(gè)了。故筆者是建議大家通過唯一的進(jìn)程標(biāo)識(shí)號來管理后臺(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)程遇到的問題。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多