ps -ef|grep cpu|grep -v grep 檢視程序情況並去掉grep
ps -ef|grep cpu|grep -v grep
1、場景
在一個Linux機器上起了很多個cpu.sh的指令碼,如下圖,想一次性把他們kill掉
2、方法
2.1去除grep cpu
上圖中可以看到最後一個pid為22603的程序是grep cpu程序,並非cpu.sh,怎麼把它去除呢,通過ps -efw | grep cpu |grep -v grep達到目的
為什麼能達到這個效果?
我們通過grep --help看
可以看出
1.grep 是查詢含有指定文字行的意思,比如grep cpu 就是查詢含有cpu的文字的行
2.grep -v 是反向查詢的意思,比如 grep -v grep 就是查詢不含有 grep 欄位的行
2.2殺程序
使用ps -efw一個一個檢視cpu.sh的PID,然後一個一個kill -9 PID或 kill -9 PID1 PID2 PID3
kill -9後面支援多個PID,意思是將這些PID全部kill掉
2.3進階
kill -9 `ps -ef|grep cpu|grep -v grep|awk '{print $2}'`
kiil -9後面``裡面的內容表示引數輸入,而ps -ef|grep cpu|grep -v grep|awk '{print $2}'的的效果需要說明Linux的一個原理
管道符“|”用來隔開兩個命令,管道符左邊命令的輸出會作為管道符右邊命令的輸入。
那麼這個命令列的解析如下:
1、ps -ef 顯示所有的程序,其中後面的e是顯示結果的意思,f是顯示完整格式,其他比如-w是不限制列寬顯示,具體可見ps --help all
2、ps -ef|grep cpu作用是把包括cpu這個關鍵字的程序都顯示出來
3、如2.1所示,ps -ef|grep cpu會把grep cpu的程序也統計進來,因此用ps -ef|grep cpu|grep -v grep去除grep程序
4、最後,只包含cpu關鍵字的程序篩選結果作為輸入給awk '{print $2}',這個部分的作用是提取輸入的第二列,而第二列正是程序的PID
執行效果見下圖
附錄:
本文內容參考了
https://blog.csdn.net/beyondlpf/article/details/8065070
作者還提及了pgrep、pidof、xargs、pkill和killall等命令列,很有意思,尤其是pkill,達到本文件目的用pkill只需要pkill -9 cpu即可,很簡潔,但不知道在我的機器上為何沒有生效,mark下,後續研究
---------------------
作者:u____
來源:CSDN
原文:https://blog.csdn.net/u____/article/details/79859503
版權宣告:本文為博主原創文章,轉載請附上博文連結!