1. 程式人生 > >ps -ef|grep cpu|grep -v grep 檢視程序情況並去掉grep

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 
版權宣告:本文為博主原創文章,轉載請附上博文連結!