htop / top 在命令行上指定进程名称过滤器 - 在程序启动时?

htop / top 在命令行上指定进程名称过滤器 - 在程序启动时?

我使用的是 Ubuntu 18.04。我已经知道我可以启动htop,然后按 F4 进行过滤,然后键入或粘贴进程名称搜索查询(例如,gphoto2查找gvfs-gphoto2-volume-monitor.service),然后 htop 过滤显示的进程:如果没有这样的进程,则它什么都不显示,如果稍后启动,则htop随后显示。

现在,我想htop从命令行开始过滤,例如:

htop --filter="gphoto2"

...并获得与按 F4 并在终端 UI 中输入完全相同的行为。如果将命令集成到会话中,这将很有用tmux

我浏览过man htop,但不幸的是我看不到这样的命令行/选项。我见过的最接近的是-p,如中所述如何仅显示*不*匹配过滤器的进程?:

就像是

htop -p "$(pgrep -vfd, 'java|python')"

这有一个明显的缺点,即不考虑 htop 开始运行后启动的进程

那么,有没有一种方法可以在启动时在命令行上设置进程名称过滤,以便考虑新终止或生成的进程(就像在htops 终端 UI 中按 F4 一样)- for htop、 或top或任何其他类似程序?

答案1

嗯,现在是 2021 年 3 月 25 日,我在 Arch 下运行 htop 版本 3.0.5 --filter test-F test并且--filter="test"一切-F="test"对我来说都很好。这包含在手册页中:

COMMAND-LINE OPTIONS
[...]
       -F --filter=FILTER
              Filter processes by command

答案2

你可以在 top 中执行此操作,而不是我所知道的 htop 中。

你想要-p旗帜。例如:top -p $(pgrep -d',' -f "geany")

这将启动 top,仅显示 geany 的进程。

顶部过滤到 geany 进程

答案3

我也去寻找这个选项,但它不存在。我决定(使用您的搜索词):

\# ps -aux |grep "[0-9] gphoto2"

答案4

您的命令在旧版本中不起作用,而您可能有一个。也许,您也像我一样试图通过遗留系统找到自己的出路。接受的答案已经说对了,只有旧版本才有问题,通过示例证明:

$ htop -v
htop 1.0.1 - (C) 2004-2011 Hisham Muhammad
Released under the GNU GPL.

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.5 LTS
Release:    12.04
Codename:   precise
$ htop --filter test
htop: unrecognized option '--filter'
$ htop --filter "test"
htop: unrecognized option '--filter'
$ htop -F test
htop: invalid option -- 'F'
$ htop -F "test"
htop: invalid option -- 'F'

并来自其他答案+评论:

$ htop -p $(pgrep -d',' -f "test")
htop: invalid option -- 'p'
$ top -p $(pgrep -d',' -f "test")
--works--

相关内容