Ограничить команду top, чтобы отображать только топ X процессов в командной строке

Я не уверен, почему нет возможности в top команда, которая делает это, как это кажется естественным запросом.

Если я трубу на выходе top в head, тогда список не обновляется, и я получаю статический вывод один раз. Я мог бы тогда принести watch команда в действие, которое сделало бы работу. Но есть ли более простое решение?

5 ответов

Решение
> top

затем нажмите n установить максимальное количество отображаемых задач.

При работе с top одним из наиболее важных ключей является помощь (h или же ?) чтобы увидеть доступные варианты (n дается в помощь).

ОБНОВЛЕНИЕ (после комментария):

PERSONAL Configuration File может помочь в пакетном режиме. Бежать top затем установите максимальное количество задач, отображаемых с n и использовать W интерактивная команда для создания или обновления файла конфигурации. top будет запущен в соответствии с файлом конфигурации в следующий раз.

Я использую трюк, специально для пакетного режима. Я направляю выход в grep с опцией "-A", чтобы показать N строк после совпадения.

Так как в первой строке top есть что-то вроде: "средняя нагрузка", я, например, grep:

$ top -d 5 -b|grep "load average" -A 15
top - 09:42:34 up 38 min,  1 user,  load average: 0.22, 0.39, 0.53
Tasks: 294 total,   2 running, 291 sleeping,   0 stopped,   1 zombie
%Cpu(s):  3.5 us,  0.9 sy,  0.0 ni, 94.6 id,  0.5 wa,  0.3 hi,  0.1 si,  0.0 st
KiB Mem :  8065144 total,  2213800 free,  2733524 used,  3117820 buff/cache
KiB Swap: 24575996 total, 24575996 free,        0 used.  4613128 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 2744 lrojas    20   0 3376820 752000 116588 R  20.2  9.3   9:30.01 firefox
 1869 lrojas     9 -11  566164  18336  14300 S   5.2  0.2   2:35.78 pulseaudio
 2401 lrojas    20   0  740092 200456  87256 S   2.4  2.5   0:57.29 skype
 2402 lrojas    20   0  617872 172924  76172 S   2.2  2.1   0:57.17 skype
 1333 root      20   0  459028  60992  48024 S   1.6  0.8   0:36.14 Xorg
 1838 lrojas    20   0 2103336 184468  64724 S   1.4  2.3   0:56.85 gnome-shell
 2359 lrojas    20   0  741212  35068  24620 S   1.4  0.4   0:06.83 gnome-terminal-
 2404 lrojas    20   0 1867556 229912  83988 S   0.8  2.9   0:19.63 thunderbird
 1249 apache    20   0  461436  10196   3404 S   0.4  0.1   0:00.57 httpd

Таким образом, он будет продолжен в пакетном режиме, всегда показывая только первые N строк вывода.

Полностью стандартное решение, для любой версии топ.

Возможно, вам следует добавить -b параметр, который работает top в пакетном режиме: watch -n 5 'top -b -d 5 | head -n 10'

Решение для MAC:

      top -a -n20 | awk 'FNR>=11 && FNR<=31{print $0};FNR==31{exit}' > cpustat.txt

Вы можете создать файл конфигурации для top (например: запустите команду top в интерактивном режиме, затем нажмите «n» и напишите ограничение на количество процессов, затем нажмите «W», чтобы сохранить это в файле конфигурации).

На следующем шаге вы можете запустить top в пакетном режиме; параметр в файле конфигурации ограничивает вывод запрошенным значением. Итак, далее просто:

      top -b > top.log

будет достаточно.

Другие вопросы по тегам