我在后台启动了我的 Python 程序,nohup
如下所示 -
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