Как изменить длину строки вывода из команды "top" linux, работающей в пакетном режиме
Следующая команда полезна для захвата текущих процессов, которые занимают больше всего ЦП, и сохранения в файл:
top -c -b -n 1 > top.log
-c
Флаг особенно полезен, потому что он дает вам аргументы командной строки каждого процесса, а не только имя процесса.
Без -c
:
2497 root 18 0 11264 5888 1524 S 0.0 0.1 0:03.31 miniserv.pl
С -c
(дополнительная полезная информация о команде):
2497 root 18 0 11264 5888 1524 S 0.0 0.1 0:03.31 /usr/bin/perl /usr/libexec/webmin/miniserv.pl /etc/webmin/miniserv.conf
Проблема в том, что каждая строка вывода усекается, чтобы соответствовать текущему окну терминала. Это нормально, если вы можете иметь широкий терминал, потому что у вас много выходных данных, но если ваш терминал имеет ширину всего 165 символов, вы получаете только 165 символов информации на процесс, и часто не хватает символов для отображения полной команды процесса, Это особая проблема, когда команда выполняется без терминала, например, если вы делаете это с помощью задания cron.
Кто-нибудь знает, как остановить top
усечение данных или силы top
отображать определенное количество символов в строке?
Это не срочно, потому что есть альтернативный метод получения 10 лучших процессов, упорядоченных по использованию ЦП:
ps -eo pcpu,pmem,user,args | sort -r -k1 | head -n 10
2 ответа
Вы можете установить COLUMNS
переменная среды для большого значения. Например, чтобы установить его только для top
вызов:
$ COLUMNS=1000 top -c -b -n 1 > top.log
По крайней мере, это работает в Bash 4.0.33 на Ubuntu 9.10.
Еще лучшее решение, скажитеtop
использовать ширину независимо от терминала.
top -w 512 -cbn 1
где-w
это то, что можно использовать.
Отman top
:
-w :переопределение ширины вывода как: -w [число]
В пакетном режиме при использовании без аргумента top форматирует вывод с использованием переменных среды COLUMNS= и LINES=, если они установлены. В противном случае ширина будет зафиксирована и составит максимум 512 столбцов. С помощью аргумента ширину вывода можно уменьшить или увеличить (до 512), но количество строк считается неограниченным.