如何使用程序名称而不是 PID 来终止进程?

如何使用程序名称而不是 PID 来终止进程?

我在后台启动了我的 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

相关内容