进程id不断变化,不能用name杀死它

进程id不断变化,不能用name杀死它

我正在通过 SSH 使用 Ubuntu 16,遇到了一个问题。我想终止该进程,但找不到方法,因为它每次都会不断更改 PID。

我正在使用此命令来检查进程是否正在运行,这里“geth”是我的进程名称

ps ax | grep geth 

结果如下,

在此处输入图片描述

当我尝试使用进程名称终止该进程时,它显示

killall geth

geth:未找到进程

答案1

在 Ubuntu 中,grep是 的别名grep --color=auto。您可以通过运行 来确认type grep。当您运行 时grep something,您将实际上跑步grep --color=auto something

现在,当grep运行 或任何其他命令时,都会创建一个进程。因此,即使某个进程在内存中不存在,它也会产生一个输出,该输出显然是该grep进程。例如,我没有注册为 的应用程序/程序foo。但即使我运行ps aux | grep foo,我也会得到:

kulfy    13544  0.0  0.0  21532  1076 pts/0    S+   23:59   0:00 grep --color=auto foo

grep一旦处理完从 管道传输的所有输出,该进程将自动终止ps aux

您可以使用pgrep而是。它将显示正在运行的进程的进程 ID,并将名称作为参数传递。它不需要通过管道传输。


进一步阅读:

答案2

正如已经回答的那样,您正在查看自己的grep进程。这就是为什么每个进程都有一个新的 PID。如果您想排除包含的这些行grep,您可以执行ps ax | grep [g]eth

相关内容