Следующая команда полезна для захвата текущих процессов, которые занимают больше всего ЦП, и сохранения их в файле:
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.