Linux Top命令,包含20多个命令

Mar*_*dir 3 linux bash top-command

我想使用top以按进程名称监视多个进程.我已经知道做了$ top -p $(pgrep -d ',' <pattern>)top只限制了20个pid.有没有办法允许20多个pids?

我是否必须结合pswatch获得类似的结果?

Mar*_*oij 5

来自top/top.c:

if (Monpidsidx >= MONPIDMAX)
    error_exit(fmtmk(N_fmt(LIMIT_exceed_fmt), MONPIDMAX));
Run Code Online (Sandbox Code Playgroud)

(LIMIT_exceed_fmt您收到的错误消息在哪里).

并在top/top.h:

#define MONPIDMAX  20
Run Code Online (Sandbox Code Playgroud)

我将这个数字改为80,这似乎没问题.不确定为什么这个硬编码限制如此之低.

因此,如果手动编译procps-ng是一个选项,那么你可以这样做.您不需要更换系统顶部(或需要root权限),您可以将它放在homedir中.

另一种解决方法可能是使用tmuxscreen多个top实例.

另一种可能的解决方案可能是使用ps循环,即.

#!/bin/sh

while :; do
    clear
    ps $*
    sleep 1
done
Run Code Online (Sandbox Code Playgroud)

将其调用为: ./psloop.sh 42 666

您可能需要添加更多标志以ps获取其他信息.还要注意这个效率较低,因为它每秒会调用3个二进制文件.