ps 和 top 显示的命令名称与 pkill 和 pgrep 看到的命令名称不同

ps 和 top 显示的命令名称与 pkill 和 pgrep 看到的命令名称不同

我经常想终止那些我认为已经更改了命令名称的进程(我想过setproctitle()或类似的事情)。

显然pkill,、pgrep和朋友不会读取新的命令名称(即 ruby​​ 进程重命名其命令,pkill 仍然将其视为ruby和而不是delayed_job)。

但是psh?top这么做。

我唯一的办法是使用 greping/awkingps来终止这些类型的进程,还是我遗漏了什么?

答案1

尝试使用ps -fpgrep -fpkill -f

从相应的手册页中:

ps -f

Do full-format listing. This option can be combined with many
other UNIX-style options to add additional columns. It also
causes the command arguments to be printed.

-

pgrep/pkill -f, --full

The pattern is normally only matched against the process name.
When -f is set, the full command line is used.

相关内容