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