linux 大量刪除進程與查看進程詳解

來源:互聯網
上載者:User

1. 在 LINUX 命令平台輸入 1-2 個字元後按 Tab 鍵會自動補全後面的部分(前提是要有這個東西,例如在裝了 tomcat 的前提下, 輸入 tomcat 的 to 按 tab)。

2. ps 命令用於查看當前正在啟動並執行進程。
grep 是搜尋
例如: ps -ef | grep java
表示查看所有進程裡 CMD 是 java 的進程資訊
ps -aux | grep java
-aux 顯示所有狀態
ps

3. kill 命令用於終止進程

例如: kill -9 [PID]
-9 表示強迫進程立即停止
通常用 ps 查看進程 PID ,用 kill 命令終止進程
網上關於這兩塊的內容


4.大量刪除進程


介紹兩種方法。要kill的進程都有共同的字串。
 

 代碼如下 複製代碼
[plain]
kill -9 `ps -ef |grep xxx|awk '{print $2}' `  

 
kill -9後面的符號是Tab鍵上方那個。
 
如上就是kill -9 `列出進程,找到包含xxx的行,輸出pid的列`
 
kill、ps、grep都是很常用的命令了。
 
awk的作用是輸出某一列,{print $2}就是輸出第二列,如上即是pid這一列。這裡有一篇awk的教程
 

 代碼如下 複製代碼
[plain]
ps -ef | grep xxx | grep -v root | awk '{print $2}' | xargs kill -9 

 
grep -v這個參數的作用是排除某個字元。所以這裡排除了root執行的命令。
 
之後也利用awk找到pid這一列。
 
最後的xargs是從標準輸出擷取參數並執行命令的程式,即從前面的命令擷取輸出作為參數來執行下一個命令。


5.清理殭屍進程

今天在維護伺服器的時候,發現有5個nova-novncproxy的殭屍進程。

?
26327 ?        S      0:05  _ /usr/bin/python /usr/bin/nova-novncproxy --config-file=/etc/nova/nova.conf
 4765 ?        Z      0:00      _ [nova-novncproxy] <defunct>
 4766 ?        Z      0:00      _ [nova-novncproxy] <defunct>
 4767 ?        Z      0:00      _ [nova-novncproxy] <defunct>
 4768 ?        Z      0:00      _ [nova-novncproxy] <defunct>
 4769 ?        Z      0:00      _ [nova-novncproxy] <defunct>


一般殭屍進程很難直接kill掉,不過您可以kill殭屍爸爸。父進程死後,殭屍進程成為”孤兒進程”,過繼給1號進程init,init始終會負責清理殭屍進程.它產生的所有殭屍進程也跟著消失。

 代碼如下 複製代碼

ps -e -o ppid,stat | grep Z | cut -d” ” -f2 | xargs kill -9

kill -HUP `ps -A -ostat,ppid | grep -e ’^[Zz]‘ | awk ’{print $2}’`

當然您可以自己編寫更好的shell指令碼,歡迎與大家分享。

我將nova-novncproxy stop後再start,殭屍進程即消失,問題解決。

另外子進程死後,會發送SIGCHLD訊號給父進程,父進程收到此訊號後,執行waitpid()函數為子進程收屍。就是基於這樣的原理:就算父進程沒有調用wait,核心也會向它發送SIGCHLD訊息,而此時,儘管對它的預設處理是忽略,如果想響應這個訊息,可以設定一個處理函數。

6.如何避免殭屍進程呢?


處理SIGCHLD訊號並不是必須的。但對於某些進程,特別是伺服器處理序往往在請求到來時產生子進程處理請求。如果父進程不等待子進程結束,子進程將成為殭屍進程(zombie)從而佔用系統資源。如果父進程等待子進程結束,將增加父進程的負擔,影響伺服器處理序的並發效能。在Linux下 可以簡單地將 SIGCHLD訊號的操作設為SIG_IGN。
signal(SIGCHLD,SIG_IGN);
這樣,核心在子進程結束時不會產生殭屍進程。這一點與BSD4不同,BSD4下必須顯式等待子進程結束才能釋放殭屍進程

或者

用兩次fork(),而且使緊跟的子進程直接退出,是的孫子進程成為孤兒進程,從而init進程將負責清除這個孤兒進程。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.