如何使用程序的名称而不是PID来杀死进程?

我使用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命令,如下所述,这是不断scooking 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 

如果你看看那个PID的右边是什么,你可能会注意到它是grep的PID来寻找你的searchstring。 这就是为什么每次都不一样。 当你从grep返回shell时,grep当然不在了。

如果它仍在运行,您将以不同的名称find您的进程。 试试ps ax | grep python ps ax | grep python代替,或者更好,如果你有它, pgrep python

要做这个过程的grep,你可以使用

 ps ax|grep name|grep -v grep 

这将摆脱grep命令,但是如果你的脚本名字没有出现,你可能必须做ps axw来获得更长的命令行。

 ps axww|grep name|grep -v grep