如何使用程序名称而不是 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 已自动更改。

所以我不确定如何终止这个过程?

有什么方法可以终止该名称对应的进程?

更新:-

这是我得到的。我这样做了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

使用killall

killall <the_process_name>

答案2

示例中不断变化的 pid 是 grep 尝试查找 PID 的进程 ID。这意味着 ps 和 grep 未找到您要查找的实际进程。

尝试运行不带尾随“&”的脚本,看看它在做什么。很有可能它会悄悄地失败,实际上根本没有启动。

您还可以使用系统监视器工具可查看带有进程 ID 的完整进程列表。

答案3

您可以使用 pkill 发送 kill 信号,与 kill 信号相同

Eg: pkill firefox 
pkill -9 firefox

答案4

基本问题在于命令“ps ax | grep something”。该命令始终将“grep ... something”列为进程之一,而这实际上是您启动的“grep”。请使用“pgrep”来获取 pid

看:https://unix.stackexchange.com/questions/74185/how-can-i-prevent-grep-from-showing-up-in-ps-results

相关内容