Linux

如何使用程序名稱而不是 PID 殺死程序?

  • December 28, 2013

nohup我使用如下所述在後台啟動了我的 Python 程序-

nohup zook.py &

現在我試圖殺死這個程序,所以我ps執行了下面提到的命令

root@phxdbx1145:/home/david/zook# ps ax | grep zook.py
16352 pts/6    S+     0:00 grep --color=auto zook.py

但不知何故,每次它的 PID 改變時,我不知道為什麼。每當我喜歡這樣 -

kill -9 16352

它總是說,No Such Process

當我再次執行 px 命令時,我看到 PID 自動更改了..

所以我不確定如何殺死這個程序?

有什麼辦法可以以某種方式終止該名稱的程序嗎?

我試過了

killall zook.py

但這對我不起作用,我得到-

zook.py: no process found

還有其他選擇嗎?不知何故,它的PID每次都在改變..所以我不能使用kill -9 pid

更新:-

這就是我得到的。我做了pkill -9 zook.py,然後我做了 ps 命令,如下所述,它一直在顯示 zook.py?

root@dbx1145:/home/david/zook# pkill -9 zook.py

root@dbx1145:/home/david/zook# ps ax | grep zook.py
23870 pts/6    S+     0:00 grep --color=auto zook.py

root@dbx1145:/home/david/zook# ps ax | grep zook.py
23872 pts/6    S+     0:00 grep --color=auto zook.py

root@dbx1145:/home/david/zook# ps ax | grep zook.py
23874 pts/6    S+     0:00 grep --color=auto zook.py

root@dbx1145:/home/david/zook# ps ax | grep zook.py
23876 pts/6    S+     0:00 grep --color=auto zook.py

如果您查看該 PID 右側的內容,您可能會注意到它是 grep 的 PID 查找您的搜尋字元串。這就是為什麼它每次都不一樣。當你從 grep 得到你的 shell 時,grep 當然已經消失了。

如果您的程序仍在執行,您會發現您的程序使用不同的名稱。試試吧ps ax | grep python,或者更好,pgrep python如果你有的話。

要為該過程執行 grep,您可以使用

ps ax|grep name|grep -v grep

這將擺脫 grep 命令,但是如果您的腳本名稱未顯示,您可能必須執行 ps axw 以獲得更長的命令行。

ps axww|grep name|grep -v grep

引用自:https://serverfault.com/questions/563873