linux查詢進程號,出現兩個進程


[root@ADM01B ~]# ps -ef|grep iesmgr
root      5929  5321  0 09:38 pts/7    00:00:00 grep iesmgr
root      9798     1  0 Jun28 ?        00:00:05 iesmgr
[root@ADM01B ~]# kill -9 5929
-bash: kill: (5929) - 沒有那個進程
[root@ADM01B ~]# kill -9 9798
[root@ADM01B ~]# 

當我在linux系統下查詢某個程序的進程時出現兩個進程,進程號分別為5929和9798
我想把該進程殺掉 kill -9 5929,但是顯示沒有那個進程,然后我又殺掉9798這個進程kill -9 9798,成功殺掉了。

對此現象疑惑不解。為啥有這個進程,kill的時候有顯示沒有。
最后通過查資料知道,ps -ef|grep iesmgr命令其實是分兩步完成的。第一步執行ps -ef查詢所有進程,第二步執行grep iesmgr過濾出進程中帶有iesmgr關鍵字的進程

這樣就出現了一個問題:其中grep iesmgr這個命令本身執行的時候也是個進程,並且也帶有關鍵字iesmgr。所以也會顯示出來,這其實是grep進程,而不是iesmgr進程。grep進程在命令執行完之后就結束了,所以kill該進程的時候顯示-bash: kill: (5929) - 沒有那個進程

如果不想顯示grep進程怎么辦,可以使用下面的命令:
# ps -ef|grep iesmgr |grep -v grep

grep的-v參數是取反,也就是說grep -v grep是過濾掉那些帶grep關鍵字進程,即把grep iesmgr這個進程過濾掉。


補充:

  1. ps命令
    ps [選項]
    下面對命令選項進行說明:
    -e 顯示所有進程。
    -f 全格式。
    -h 不顯示標題。
    -l 長格式。
    -w 寬輸出。
    a 顯示終端上的所有進程,包括其他用戶的進程。
    r 只顯示正在運行的進程。
    u  以用戶為主的格式來顯示程序狀況。
    x 顯示所有程序,不以終端機來區分。

  2. grep命令
    grep [options]
    [options]主要參數:
    -c:只輸出匹配行的計數。
    -I:不區分大 小寫(只適用於單字符)。
    -h:查詢多文件時不顯示文件名。
    -l:查詢多文件時只輸出包含匹配字符的文件名。
    -n:顯示匹配行及 行號。
    -s:不顯示不存在或無匹配文本的錯誤信息。
    -v:顯示不包含匹配文本的所有行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM