Назад | Перейти на главную страницу

Как изменить длину выходной строки с помощью «верхней» команды Linux, запущенной в пакетном режиме

Следующая команда полезна для захвата текущих процессов, которые занимают больше всего ЦП, и сохранения их в файле:

top -c -b -n 1 > top.log

В -c flag особенно полезен, потому что он дает вам аргументы командной строки для каждого процесса, а не только имя процесса.

Без -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

Вы можете установить COLUMNS переменная среды на большое значение. Например, чтобы установить его только для top призыв:

$ COLUMNS=1000 top -c -b -n 1 > top.log

По крайней мере, это работает в bash 4.0.33 на Ubuntu 9.10.