Как ограничить количество строк в выводе команды top в неинтерактивном режиме для LINUX
Как мы можем ограничить количество строк в выводе верхней команды конкретным числом "скажем, 5" в неинтерактивном режиме?
3 ответа
Вы должны предоставить параметр -w без аргумента и указать желаемое количество строк через переменную среды LINES:
LINES=20 top -b -n 1 -w
Обратите внимание, что ширина вывода контролируется через переменную среды COLUMNS. Поэтому, если он установлен в вашей среде, вы должны переопределить его для вызова top:
LINES=20 COLUMNS=80 top -b -n 1 -w
или же
(unset COLUMNS; LINES=20 top -b -n 1 -w)
Это работает для версии top
включен в Ubuntu 15.10.
$ top -v
procps-ng version 3.3.9
Usage:
top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]
Очевидно, опция -w присутствует не во всех версиях top
, Но вы всегда можете использовать трубы, чтобы ограничить вывод:
top -b -n 1|head -n 20
Для OS X ответ:
$ top -l 1 -n 5
Но OS X top
сортирует по PID по умолчанию, так что вы, вероятно, хотите добавить -o cpu
тоже.
Это редко дает право на%cpu на первой итерации либо... что, я думаю, может быть проблемой с 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 строк вывода.
Полностью стандартное решение, для любой версии топ.
Ура,
Луис