1. 程式人生 > >測試開發linux面試之三:後臺進程之操作

測試開發linux面試之三:後臺進程之操作

狀態 很好 分配 例如 名稱 標識 批處理 推薦 子進程

Hi,大家好我是Tom,繼上次分享之後這次給大家帶來新的知識。

進程是Linux系統中一個非常重要的概念。Linux是一個多任務的操作系統,系統上經常同時運行著多個進程。我們不關心這些進程究竟是如何分配的,或者是內核如何管理分配時間片的,所關心的是如何去控制這些進程,讓它們能夠很好地為用戶服務。

Linux操作系統包括三種不同類型的進程,每種進程都有自己的特點和屬性。交互進程是由一個Shell啟動的進程。交互進程既可以在前臺運行,也可以在後臺運行。批處理進程和終端沒有聯系,是一個進程序列。監控進程(也稱系統守護進程)時Linux系統啟動時啟動的進程,並在後臺運行。例如,httpd是著名的Apache服務器的監控進程。

kill命令的工作原理是,向Linux系統的內核發送一個系統操作信號和某個程序的進程標識號,然後系統內核就可以對進程標識號指定的進程進行操作。比如在top命令中,我們看到系統運行許多進程,有時就需要使用kill中止某些進程來提高系統資源。在講解安裝和登陸命令時,曾提到系統多個虛擬控制臺的作用是當一個程序出錯造成系統死鎖時,可以切換到其它虛擬控制臺工作關閉這個程序。此時使用的命令就是kill,因為kill是大多數Shell內部命令可以直接調用的。

作為測試我們不需要知道linux太過底層的知識,不過我們有時候需要查看服務進程是否正常,需要對進程進行操作,來輔助異常測試,所以以下命令對我們日常工作還是有很大幫助的,面試有時候也會問到,如果你能把進程概念說清楚+日常命令熟練掌握,那這部分就會成為你的加分項!

查看指定進程的基本信息

ps -ef | grep 進程名關鍵字

查看所有進程的狀態

ps -aux

將進程暫停

kill -s 19 pid

將繼續執行暫停的任務

kill -s 18 pid

將進程強制殺死

kill -s 9 pid

將進程殺死

kill -s 15 pid

中斷

kill -s 2

退出

kill -s 3

killall命令殺死同一進程組內的所有進程。其允許指定要終止的進程的名稱,而非PID

可以直接使用進程的名字而不是進程標識號

killall -HUP inetd

‘‘‘

這裏要特別提醒大家註意的是:殺死進程最安全的方法是單純使用kill命令,不加修飾符,不帶標誌。

‘‘‘

以優雅的方式結束進程

kill -l PID

-l選項告訴kill命令用好像啟動進程的用戶已註銷的方式結束進程。當使用該選項時,kill命令也試圖殺死所留下的子進程。但這個命令也不是總能成功--或許仍然需要先手工殺死子進程,然後再殺死父進程。

如果以上方法都不能解決你的問題,那麽請繼續看絕殺!!!

這個強大和危險的命令迫使進程在運行時突然終止,進程在結束後不能自我清理。危害是導致系統資源無法正常釋放,一般不推薦使用,除非其他辦法都無效。當使用此命令時,一定要通過ps-ef確認沒有剩下任何僵屍進程。只能通過終止父進程來消除僵屍進程。如果僵屍進程被init收養,問題就比較嚴重了。殺死init進程意味著關閉系統。

如果系統中有僵屍進程,並且其父進程是init,而且僵屍進程占用了大量的系統資源,那麽就需要在某個時候重啟機器以清除進程表了。

綜上所述,正常如果需要殺掉某個進程直接kill +PID進程名字就足夠了,一定記得殺死附帶的子進程不然留存僵屍進程,絕殺命令一定要慎重!!!

測試開發linux面試之三:後臺進程之操作