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

ars*_*nal 0 linux unix python nohup background-process

我使用nohup如下所述在后台启动了我的 Python 程序-

nohup zook.py &
Run Code Online (Sandbox Code Playgroud)

现在我试图终止这个进程,所以我ps执行了下面提到的命令

root@phxdbx1145:/home/david/zook# ps ax | grep zook.py
16352 pts/6    S+     0:00 grep --color=auto zook.py
Run Code Online (Sandbox Code Playgroud)

但不知何故,每次它的 PID 改变时,我都不知道为什么。每当我喜欢这样 -

kill -9 16352
Run Code Online (Sandbox Code Playgroud)

它总是说,No Such Process

当我再次执行 px 命令时,我看到 PID 自动更改了..

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

有什么办法可以以某种方式终止带有名称的进程吗?

我试过

killall zook.py

但它对我不起作用,我得到 -

zook.py: no process found
Run Code Online (Sandbox Code Playgroud)

还有其他选择吗?不知何故,它的 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
Run Code Online (Sandbox Code Playgroud)

Fal*_*mot 5

如果您查看该 PID 右侧的内容,您可能会注意到它是 grep 寻找您的搜索字符串的 PID。这就是为什么每次都不一样。当您从 grep 取回 shell 时,当然 grep 已经消失了。

如果您的进程仍在运行,您会以不同的名称找到它。试试吧ps ax | grep python,或者更好,pgrep python如果你有的话。