Как подавить общую информацию для топ-команды

Я хочу подавить общую информацию для верхней команды с помощью top parameter,

Под общей информацией я имею в виду следующие вещи:

top - 09:35:05 up  3:26,  2 users,  load average: 0.29, 0.22, 0.21
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.3%us,  0.7%sy,  0.0%ni, 96.3%id,  0.8%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   3840932k total,  2687880k used,  1153052k free,    88380k buffers
Swap:  3998716k total,        0k used,  3998716k free,   987076k cached

Что я не хочу делать, это:

top -u user | grep process_name

или же

top -bp $(pgrep process_name) | do_something

Как мне этого добиться?

Примечание: я нахожусь на Ubuntu 12.04 и топ-версия 3.2.8.

5 ответов

Решение

Он известен как "Сводная область", и я не думаю, что есть способ top инициализация для отключения тех.

Но пока top работает, вы можете отключить их, нажав l, t, m.

От man top:

 Summary-Area-defaults
  'l' - Load Avg/Uptime  On  (thus program name)
  't' - Task/Cpu states  On  (1+1 lines, see '1')
  'm' - Mem/Swap usage   On  (2 lines worth)
  '1' - Single Cpu       On  (thus 1 line if smp)

Наткнулся сегодня на этот вопрос. У меня есть потенциальное решение - создать верхний файл конфигурации изнутри интерактивного режима верха, когда сводная область отключена. Поскольку этот файл также читается при запуске top в пакетном режиме, это также приведет к отключению области сводки в пакетном режиме.

Выполните следующие шаги, чтобы настроить его.

  1. Запустите top в интерактивном режиме.

  2. Находясь в интерактивном режиме, отключите итоговую область, последовательно нажимая "l", "m" и "t".

  3. Нажмите "W" (верхний регистр), чтобы написать свой верхний файл конфигурации (обычно ~/.toprc)

  4. Выход из интерактивного режима.

Теперь при запуске top в пакетном режиме область сводки не появится (!)

Сделав еще один шаг вперед...

Если вы хотите использовать это только в определенных ситуациях и большую часть времени хотите получать область сводных данных, вы можете использовать альтернативный верхний файл конфигурации. Тем не менее, AFAIK, способ получить верх для использования альтернативного конфигурационного файла немного напуган. Есть несколько способов сделать это. Подход, который я использую, заключается в следующем:

  1. Создайте программную ссылку на верхний исполняемый файл. Это не обязательно делать как root, если у вас есть права на запись в местоположение ссылки...

    ln -s /usr/bin/top /home/myusername/bin/omgwtf
    
  2. Запустите top, введя имя ссылки ("omgwtf"), а не "top". Вы будете в обычном верхнем интерактивном режиме, но когда вы сохраните файл конфигурации, он запишет в ~/.omgwtfrc, оставив ~ /.toprc в покое.

  3. Отключите область сводки и запишите файл конфигурации так же, как и раньше (нажмите "l", "m", "t" и "W")

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

% omgwtf -usyslog -bn1
PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
576 syslog    20   0  264496   8144   1352 S   0.0  0.1   0:03.66 rsyslogd
%

Если вы запускаете топ в пакетном режиме (-b -n1), просто удалите верхние строки с помощью sed:

top -b -n1 | sed 1,7d

Это удалит верхние 7 строк заголовка, которые выводят верхний, и вернет только процессы.

Это выведет выходные данные и при необходимости может быть перенаправлен в любой файл.

top -n1  |grep -Ev "Tasks:|Cpu(s):|Swap:|Mem:"

Для мониторинга конкретного процесса у меня работает следующая команда -

top -sbn1 -p $(pidof <process_name>) | grep $(pidof <process_name>)

И чтобы получить всю информацию о процессе вы можете использовать следующее -

top -sbn1|sed -n '/PID/,/^$/p'

egrep может быть достаточно в этом случае, но я бы добавил, что perl -lane мог сделать такую ​​вещь с молниеносной скоростью:

top -b -n 1 | perl -lane '/PID/ and $x=1; $x and print' | head -n10

Таким образом, вы можете навсегда забыть точные аргументы для grep, sed, awk и т. Д., Поскольку perl обычно намного быстрее этих инструментов.

На Mac вы не можете использовать -b который используется во многих других ответах.

В этом случае команда будет top -n1 -l1 | sed 1,10d

Захватывая только первую строку процесса (и ее заголовок), регистрируя только один раз, а не интерактивно, затем подавляйте общую информацию для верхней команды, которая является первыми 10 строками.

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