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