top -c
顶部列出了所有进程,有一些很好的选项可以使用选项-u按用户名过滤进程,但我想知道是否有任何简单的方法可以根据顶部输出的命令列中列出的进程名称来过滤进程。
例如,我想要进程名的top -some选项-substring,并且top显示的pids在其命令名中只包含此子字符串
发布于 2012-08-22 22:49:20
使用pgrep获取匹配命令行的pid:
top -c -p $(pgrep -d',' -f string_to_match_in_cmd_line)
top -p
需要一个逗号分隔的pids列表,所以我们在pgrep中使用-d','
。pgrep中的-f
标志使其匹配命令行,而不是程序名。
发布于 2014-06-18 04:50:59
@perreal的命令工作得很好!如果你忘记了,试着分两步…
示例: filter top仅显示名为yakuake的应用程序:
$ pgrep yakuake
1755
$ top -p 1755
有用的顶级交互命令'c‘:切换完整路径与命令名'k’:kill by PID 'F‘:filter by...使用箭头选择...然后按“%s”设置排序
下面的答案也很好。我今天一直在找它,但是找不到。谢谢
发布于 2014-12-26 14:54:27
在StackOverflow上寻找了这么多答案后,我还没有看到一个符合我需求的答案。
也就是说,让top命令使用给定的关键字保持刷新,当新进程产生时,我们不必一次又一次地使用CTRL+C / top。
因此我做了一个新的..。
这就是不需要重启的版本。
__keyword=name_of_process; (while :; do __arg=$(pgrep -d',' -f $__keyword); if [ -z "$__arg" ]; then top -u 65536 -n 1; else top -c -n 1 -p $__arg; fi; sleep 1; done;)
修改__keyword,它应该可以工作。(Ubuntu 2.6.38测试)
2.14.2015添加:上面的代码缺少系统工作负载部分。对于关心“平均负载”部分的人来说:
__keyword=name_of_process; (while :; do __arg=$(pgrep -d',' -f $__keyword); if [ -z "$__arg" ]; then top -u 65536 -n 1; else top -c -n 1 -p $__arg; fi; uptime; sleep 1; done;)
https://stackoverflow.com/questions/12075591
复制相似问题