一行CMD命令kill(殺)掉你的進程


查看進程

pi@raspberry:~ $ ps -ef | grep python3 
UID      PID   PPID  C STIME TTY     TIME   CMD
pi        4678  4666  0 11:57 pts/1    00:00:00 python3 ./Desktop/device.py
pi        4859  4644  0 11:57 pts/0    00:00:00 grep --color=auto python3
pi@raspberry:~ $ 

常規操作

pi@raspberry:~ $ kill -9 4678

一行 Code

pi@raspberry:~ $ ps -ef | grep device.py | grep -v grep | awk '{print $2}' | xargs kill -9

解析

  1. ps -ef
    列出進程信息
  2. grep device.py
    在進程信息中找到需要殺死的進程命令名
  3. grep -v grep
    在進程信息中剔除帶 grep 的信息(也就是剔除 grep 命令的進程,避免誤刪)
  4. awk '{print $2}'
    提取字符串行內容的第2個字段,也就是當前示例的進程號
  5. xargs kill -9
    將進程號作為參數傳遞給kill -9這個命令

總結

依據名字,有效殺死一個進程的方式

ps -ef | grep process_name_segment | grep -v grep | awk '{print $2}' | xargs kill -9

 其中 process_name_segment 是想要殺死的進程名稱的片段,實現模糊查找。

注意:有時候在嵌入式 Linux 系統中,打印行的第1個字段即為進程號,上述命令需要改寫為 'print $1'

補充1:

敲黑板:使用出發現 awk '{print $2}' 必須是 單引號,不能是雙引號!

因為 ' ' 單引號內容代表引入代碼塊,並對命令行中信息進行解析。

 

補充2:

更簡單的指令 pgrep 可以理解成是 pid grep ,篩選進程號,

 

因此更簡單的寫法是:

kill -9 `pgrep process_name_segment`

這里涉及一個知識點,若想要把其他命令的指令當做參數,可以使用 `執行命令` 反引號包裹起來,或者使用 $(執行命令) 美元符號加括號包裹起來。

於是,上述寫法也可以是:

kill -9 $(pgrep process_name_segment)

 


免責聲明!

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



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