Unix操作系統(tǒng)進(jìn)程管理
大家知道進(jìn)程是Unix操作系統(tǒng)的是守護(hù)神。可在任務(wù)已經(jīng)執(zhí)行完成了,但是卻沒有正常結(jié)束進(jìn)程。又或者進(jìn)程無緣無故占用了大量的系統(tǒng)資源,導(dǎo)致系統(tǒng)速度減慢,影響了其他作業(yè)的正常運(yùn)行。對(duì)于這些不服管教的進(jìn)程,系統(tǒng)工程師只能夠拿起手中的屠刀,實(shí)行“殺無赦”政策。下面,我們來學(xué)習(xí)2種方法來解決這個(gè)問題。
通過父進(jìn)程來殺死子進(jìn)程。
在Unix操作系統(tǒng)中,進(jìn)程有父子進(jìn)程的關(guān)系。某個(gè)進(jìn)程可能會(huì)創(chuàng)建另外一個(gè)進(jìn)程,這個(gè)創(chuàng)建者就是父進(jìn)程,而新建立的進(jìn)程就是子進(jìn)程。通常情況下,Unix操作系統(tǒng)如果停止了一個(gè)父進(jìn)程,則該父進(jìn)程產(chǎn)生的所有子進(jìn)程都將自動(dòng)終止。但是,這個(gè)過程可能會(huì)破壞數(shù)據(jù)文件或者其他一些難以預(yù)料的結(jié)果。故正常情況下,筆者是建議系統(tǒng)工程師先關(guān)閉掉所有的子進(jìn)程,然后再關(guān)閉父進(jìn)程。
但是,當(dāng)采取了任何手段,包括kill -9手段之后仍然無法正常殺死頑固進(jìn)程之后,Unix操作系統(tǒng)工程師只好采用這個(gè)終極殺手,即通過關(guān)閉父進(jìn)程來自動(dòng)關(guān)閉不聽話的子進(jìn)程。
但是,正如上面所說的,這很可能會(huì)導(dǎo)致一些連鎖反映。所以在采用這種方式之前,系統(tǒng)工程師還是要預(yù)先估計(jì)一下可能會(huì)帶來的后果。如可以把這個(gè)父進(jìn)程所產(chǎn)生的子進(jìn)程能夠關(guān)閉的先關(guān)閉掉。然后再通過殺死父進(jìn)程來自動(dòng)終止子進(jìn)程。這可以把對(duì)操作系統(tǒng)的不利影響降低到最低。
利用系統(tǒng)注銷功能來關(guān)閉殺不掉的進(jìn)程。
若通過關(guān)閉父進(jìn)程仍然殺不死子進(jìn)程的話,那么管理員還可以通過注銷系統(tǒng)的方式來殺死進(jìn)程。這就好象Windows系統(tǒng)注銷一樣,會(huì)關(guān)閉當(dāng)前的所有進(jìn)程與任務(wù)。不過有時(shí)候系統(tǒng)工程師可能不想關(guān)閉所有的進(jìn)程,如一些關(guān)系到服務(wù)器運(yùn)行的進(jìn)程。此時(shí),系統(tǒng)工程師在注銷Unix操作系統(tǒng)之前,需要采取一定的手段,讓系統(tǒng)注銷后仍然能夠保持某些進(jìn)程正常運(yùn)轉(zhuǎn)。
如果系統(tǒng)工程師想在系統(tǒng)注銷后仍然執(zhí)行一個(gè)或者多個(gè)進(jìn)程,則可以采用nohup命令。如此設(shè)置后,即使在系統(tǒng)注銷后,在后臺(tái)執(zhí)行的進(jìn)程仍然可以繼續(xù)執(zhí)行,不會(huì)終止。這個(gè)手段就可以把系統(tǒng)注銷對(duì)于用戶的不利影響降低到最低。如果Unix操作系統(tǒng)是企業(yè)中的一臺(tái)服務(wù)器,而不是客戶端,那么這個(gè)特性將會(huì)對(duì)企業(yè)很有利。
nohup命令運(yùn)行由Command參數(shù)和任何相關(guān)的Arg參數(shù)指定的命令,而忽略所有掛斷信號(hào)。為此在系統(tǒng)注銷后仍然可以使用nohup命令運(yùn)行后臺(tái)中的程序。注意無論是否將 nohup命令的輸出重定向到終端,輸出都將附加到當(dāng)前目錄的nohup.out 文件中。如果當(dāng)前目錄的nohup.out文件不可寫,則輸出重定向到$HOME/nohup.out 文件中。
如果上面這些文件都不可以用的話,那么Command參數(shù)指定的命令不可調(diào)用。故系統(tǒng)工程師如果事后要查看這些Unix操作系統(tǒng)注銷后仍然運(yùn)行在后臺(tái)進(jìn)程的結(jié)果,就可以依次查看以上這兩個(gè)文件。
Unix操作系統(tǒng)注銷后,通常再頑固的進(jìn)程都會(huì)被殺死掉。不過有時(shí)候會(huì)因?yàn)檫M(jìn)程實(shí)在難纏,注銷的過程時(shí)間可能會(huì)比較長。若操作系統(tǒng)在長時(shí)間后仍然無法注銷的話,那只有強(qiáng)制重新啟動(dòng)電腦了。不過重新啟動(dòng)后很可能會(huì)出現(xiàn)啟動(dòng)故障。
重新啟動(dòng)系統(tǒng)來終止進(jìn)程是不得已而為止的做法了。所以,我們盡量不要選擇這個(gè)方法,希望大家都能夠提高自己的Unix操作系統(tǒng)的操作水平。
【編輯推薦】