如何使用程式名稱而不是PID來終止進程?

如何使用程式名稱而不是PID來終止進程?

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

答案1

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

如果您的進程仍在運行,您會發現它具有不同的名稱。嘗試ps ax | grep python一下,或者更好,pgrep python如果你有的話。

答案2

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

ps ax|grep name|grep -v grep

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

ps axww|grep name|grep -v grep

相關內容