Intereting Posts
Преобразование времени unix из переменной в обычное время в AIX Статический IP-код U-boot не кажется «применимым», Как переместить файл рекурсивно на основе размера и структуры Почему бы не всегда использовать rsync? хвост отображает весь файл, а затем изменяется только Как временно извлечь флешку или жесткий диск в Linux? Почему гостевой сервер linux потребляет 100% центрального процессора под VirtualBox, когда гость простаивает? Роль дополнительных групп для пользователей Linux Почему не выводится текст, отправленный в эхо? Debian: порядок DNS-серверов при использовании VPN Система управления документами для Linux почему «echo -help» не дает мне справочную страницу эха? Расширение файловой системы XFS CentOS 7 Google Cloud fetchmail иногда доставляет почту в локальный почтовый ящик, должен перейти на сервер обмена Создание отпечатков HPKP для всей цепочки сертификатов

Как можно сортировать поле CPU команды ps?

Я пытаюсь сделать небольшую команду, которая найдет процессы, которые используют максимальную мощность процессора.

Во-первых, я использую ps aux > file.txt а затем cut -c 16-20 file.txt | sort -n | tail -5 cut -c 16-20 file.txt | sort -n | tail -5 cut -c 16-20 file.txt | sort -n | tail -5 .

В результате я получаю следующее:

 1.0 2.7 8. 14.5 14.5 

Поэтому мой вопрос заключается в том, как я могу использовать как %CPU и другие поля, выводимые вместе?

Сортировка в соответствующем поле (по умолчанию определяется как пробел для перехода без пробелов), в моем случае это третий:

 ps aux | sort -n -k 3 

Правильный ответ:

 ps --sort=-pcpu 

Для топ-5:

 ps --sort=-pcpu | head -n 6 

Таким образом, вы можете указать столбцы, не мешая сортировке.

Пример:

 ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6 

Примечание «ckujau»: --sort поддерживается ps из procps , другие реализации могут не иметь этого параметра.

Одно раздражение с принятым решением заключается в том, что заголовки для разных столбцов будут включены в выход. Еще одна проблема заключается в том, что при использовании переключателя -x в ps он будет предоставлять полные командные строки для некоторых программ, которые могут работать и становятся помехой в выходе.

Например

  1. Раздражающие командные строки

    saml 18174 7.3 3.2 1174896 259756? Sl Aug27 132: 38 / opt / google / chrome / chrome –type = renderer –lang = en-US –force-fieldtrials = AsyncDns / AsyncDnsB / ForceCompositingMode / disable / InfiniteCache / No / OmniboxHQPReplaceHUPProhibitTrumpingInlineableResult / Standard / OmniboxSearchSuggestTrialStarted2013Q1 / 7 / OneClickSignIn / Standard / Предварительно обрабатывать / PrerenderControl / SendFeedbackLinkLocation / по умолчанию / Test0PercentDefault / group_01 / UMA-Dynamic-Binary-равномерности-Trial / по умолчанию / UMA-Session-рандомизированные-Однородность-Trial-5-процентный / group_17 / UMA-Однородность-Trial -1-Процент / group_20 / UMA-Однородность-Trial-10-процентный / group_07 / UMA-Однородность-Trial-20-процентный / по умолчанию / UMA-Однородность-Trial-5-процентный / group_04 / UMA-Однородность-Trial-50 -Percent / group_01 / –enable-crash-reporter = 4061BD10D0DC127169CE2132BC3FF8EC, выпуск Fedora 14 (Laughlin) – расширение-процесс -renderer-print-preview –disable-webgl –disable-pepper-3d –disable-gl -multisampling –disable-accelated-compositing –disable-speed-2d-canvas –disable-speed-video-decode –channel = 18086.4.142338581 9

    root 1764 7.7 0.3 163692 28928 tty1 Ss + Aug21 817: 49 / usr / bin / Xorg: 0 -nr -verbose -auth / var / run / gdm / auth-for-gdm-fADI0V / database -nolisten tcp vt1

    Chrome особенно может быть очень раздражающим, если смотреть на вывод ps как это!

  2. Заголовки на выходе

     $ ps auf | sort -nk 3 | head -20 ... root 1741 0.0 0.0 4140 400 tty5 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty5 root 1743 0.0 0.0 4140 400 tty6 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty6 saml 13780 0.0 0.0 115088 4216 pts/13 Ss Aug27 0:00 bash saml 20432 0.0 0.0 6308 400 pts/9 S+ Aug27 0:00 \_ inotifywatch -e CREATE /etc saml 8206 0.0 0.0 115296 1108 pts/6 Ss+ Aug21 0:03 bash USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND saml 29352 0.1 0.5 661848 42960 pts/13 Sl+ 17:59 0:18 \_ irb ... 

    Вы можете увидеть заголовок, смешанный в 7-й строке на выходе.

альтернативы

  1. Избавление от заголовков

    ps предоставляет переключатель для отключения отображения этих заголовков столбцов. Он довольно прост в использовании, просто добавьте переключатель --no-heading .

     $ ps aux --no-heading | sort -nk 3 | head -10 68 1481 0.0 0.0 38592 2144 ? Ssl Aug21 0:28 hald 68 1527 0.0 0.0 18016 672 ? S Aug21 0:01 /usr/libexec/hald-addon-acpi avahi 1333 0.0 0.0 27872 1172 ? S Aug21 0:01 avahi-daemon: running [grinchy.local] avahi 1334 0.0 0.0 27752 20 ? S Aug21 0:00 avahi-daemon: chroot helper dbus 1307 0.0 0.0 22716 1900 ? Ss Aug21 1:03 dbus-daemon --system gdm 1879 0.0 0.0 317220 2740 ? Sl Aug21 0:00 /usr/libexec/polkit-gnome-authentication-agent-1 ntp 3060 0.0 0.0 32600 2152 ? Ss 20:05 0:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g root 1 0.0 0.0 19420 1004 ? Ss Aug21 0:01 /sbin/init root 1006 0.0 0.0 0 0 ? S Aug21 0:00 [kvm-irqfd-clean] root 1020 0.0 0.0 0 0 ? S Aug21 2:02 [kdmflush] 

    Или вот так:

     $ ps auf --no-heading | sort -nk 3 |head -10 root 1735 0.0 0.0 4140 400 tty2 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty2 root 1737 0.0 0.0 4140 400 tty3 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty3 root 1739 0.0 0.0 4140 400 tty4 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty4 root 1741 0.0 0.0 4140 400 tty5 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty5 root 1743 0.0 0.0 4140 400 tty6 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty6 saml 13780 0.0 0.0 115088 4216 pts/13 Ss Aug27 0:00 bash saml 20432 0.0 0.0 6308 400 pts/9 S+ Aug27 0:00 \_ inotifywatch -e CREATE /etc saml 2098 0.0 0.0 115508 3148 pts/9 Ss Aug22 0:05 bash saml 27134 0.0 0.0 115496 6768 pts/18 Ss Aug27 0:02 bash saml 3248 0.0 0.0 115076 1024 pts/0 Ss+ Aug21 0:00 bash 
  2. Возьмите под контроль отображаемые столбцы.

    Это может показаться болью, но если вы создаете скрипт вывода ps это не так уж плохо. Команда вроде этого будет имитировать вывод ps aux , за исключением замены более длинной формы столбца COMMAND с более короткой версией, которая просто показывает имя исполняемого файла.

     $ ps ax --no-headings -o user,pid,%cpu,%mem,vsz,sgi_rss,tname,stat,start_time,time,ucmd 

    Объединяя все вместе без заголовков столбцов, с ними проще справляться при написании сценариев.

    Список процессов с наивысшим и низким процентами:

     $ ps ax --no-headings -o user,pid,%cpu,%mem,vsz,sgi_rss,tname,stat,start_time,time,ucmd |sort -nrk 3|head -10 saml 18086 114 6.4 1418852 515236 ? Sl Aug27 1-10:53:31 chrome saml 18536 14.7 4.1 1276240 328636 ? Sl Aug27 04:29:21 chrome saml 18558 12.2 3.4 1209712 278228 ? Sl Aug27 03:44:22 chrome saml 18543 10.9 3.8 1238132 308824 ? Rl Aug27 03:20:18 chrome root 1764 7.7 0.4 170220 35276 tty1 Rs+ Aug21 13:40:16 Xorg saml 18174 7.3 3.0 1167728 241728 ? Sl Aug27 02:14:25 chrome saml 18314 3.6 1.4 1049020 119308 ? Sl Aug27 01:06:19 chrome saml 18528 2.7 3.1 1178368 251212 ? Sl Aug27 00:50:55 chrome saml 2389 2.0 0.1 330632 8480 ? Sl Aug21 03:37:13 compiz saml 18208 1.7 1.3 1081132 108828 ? Sl Aug27 00:32:02 chrome 

    Список процессов с самым низким процентом процессора:

     $ ps ax --no-headings -o user,pid,%cpu,%mem,vsz,sgi_rss,tname,stat,start_time,time,ucmd |sort -nk 3|tail -10 saml 18208 1.7 1.3 1082156 108348 ? Sl Aug27 00:32:03 chrome saml 2389 2.0 0.1 330632 8492 ? Sl Aug21 03:37:15 compiz saml 18528 2.7 3.1 1181440 250856 ? Sl Aug27 00:50:58 chrome saml 18314 3.6 1.5 1050044 119828 ? Sl Aug27 01:06:25 chrome saml 18174 7.3 3.0 1167728 242068 ? Sl Aug27 02:14:32 chrome root 1764 7.7 0.3 163688 28716 tty1 Ss+ Aug21 13:40:26 Xorg saml 18543 10.9 3.8 1235060 305464 ? Sl Aug27 03:20:32 chrome saml 18558 12.2 3.5 1214832 283560 ? Sl Aug27 03:44:34 chrome saml 18536 14.7 3.9 1267024 314400 ? Sl Aug27 04:29:39 chrome saml 18086 114 6.4 1412992 514856 ? Sl Aug27 1-10:55:28 chrome