一行命令kill(殺)掉你的程序
阿新 • • 發佈:2020-08-26
檢視程序
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
解析
ps -ef 列出程序資訊 grep device.py 在程序資訊中找到需要殺死的程序命令名 grep -v grep 在程序資訊中剔除帶 grep 的資訊(也就是剔除 grep 命令的程序,避免誤刪) awk '{print $2}' 提取字串行內容的第2個欄位,也就是當前示例的程序號 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)