Как изменить длину строки вывода из команды "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), но количество строк считается неограниченным.

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