我使用的是 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 开始运行后启动的进程
那么,有没有一种方法可以在启动时在命令行上设置进程名称过滤,以便考虑新终止或生成的进程(就像在htop
s 终端 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
答案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--