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 ...