批量kill程序 執行緒

2021-07-11 07:44:03 字數 1469 閱讀 2105

step1:背景介紹

今天在進行epoll效能測試時,測試模式為c/s模式,

server:為接收端,每接收乙個connsock連線,就fork乙個child-process處理這個連線上的資料接收

client:為傳送端,內部建立多個連線到server的socket-fd,然後註冊到epoll,通過epoll多路復用機制實現每個連線的傳送

測試時server會一直執行

client測試一次ctrl+c乾掉一次

step2:操作介紹

1)client每執行一次會建立128個套接字連線

2)client每執行一次,server內部就會建立128個child程序。ctrl+c乾掉client後對應的128個child程序還會在server內(設計的缺陷。。。,後面發現了此問題後進行了修改完善。。。。因為此缺陷導致最後client執行時根本啟動不起來,才發現是最多檔案描述符總數被server用完了,導致client執行時建立連線沒法建立起來導致client執行不起來)

3)經過client的多次執行和殺掉後,server端建立了最大數量的程序

step3:問題定位

發現此問題後(懷疑是檔案描述符被占用完了),馬上通過top看自己啟動了多少程序:

$top -u li_xiaoming

發現很多很多程序名為"server"的程序。

step4:問題解決

如果手動在top輸出介面乙個乙個kill掉所有"server"程序時,這是不可以接受的。

用下面方法一次批量全部kill掉了所有名為"server"的程序:

$ps -ef | grep "server" | grep -v "grep" | cut -c 9-15 | xargs kill -9

step5:其他知識補充

1)檢視linux伺服器上指定使用者開啟的程序

$top -u li_xiaoming

2)linux系統所有資源的限制值如何檢視

$ulimit -a

3)靜態輸出當前系統所有程序

$ps -ef

4)排除性查詢,如不顯示含有grep字串的行

$grep -v "grep"

5)獲取所有程序號pid,源物件是ps -ef輸出

$cut -c 9-15

就是擷取輸入行的第9個字元到第15個字元,而這正好是程序號pid

6)將通道的輸出內容作為乙個命令x的入參然後執行命令x

$ps -ef | grep "server" | grep -v "grep" | cut -c 9-15 |

xargs kill -9

xargs命令會將前面通道輸出內容(pid)作為kill -9的引數,然後執行kill命令

(end)

Linux批量kill程序

使用awk批量殺程序的命令 ps ef grep firefox grep v grep awk sh 說明 列出了當前主機中執行的程序中包含firefox關鍵字的程序 ps ef grep firefox grep v grep 列出了要kill掉這些程序的命令,並將之列印在了螢幕上 ps ef ...

Linux批量kill程序

使用cut批量殺程序的命令 ps ef grep firefox grep v grep awk sh 列出了當前主機中執行的程序中包含firefox關鍵字的程序 ps ef grep firefox grep v grep 列出了要kill掉這些程序的命令,並將之列印在了螢幕上 ps ef gre...

centos批量kill程序

ps ef grep zkui 2.0 snapshot jar with dependencies.jar grep v grep cut c 9 15 xargs kill 9 管道符 用來隔開兩個命令,管道符左邊命令的輸出會作為管道符右邊命令的輸入。下面說說用管道符聯接起來的 幾個命令 ps ...