Показати п’ять перших процесорів, що споживають процесор, за допомогою `ps`


101

Як показати п’ять перших процесорів, що споживають процесор з ps?

Відповіді:


95

Навіщо використовувати, psколи ви можете легко це зробити за допомогою topкоманди?

Якщо вам потрібно скористатися ps, спробуйте це:

ps aux | sort -nrk 3,3 | head -n 5

Якщо ви хочете чогось справді 'top'esq з постійними оновленнями, використовуйте годинник

watch "ps aux | sort -nrk 3,3 | head -n 5"

3
ps aux | сортувати -к 3,3 | хвіст -n 5 ;-)
PlanasB

1
добре буде включити числовий сорт, пропустити заголовок ps aux. ps aux | sort -nrk 3,3 | head -n 5
syss

1
це породжує багато процесів, що витрачає більше ресурсів, а також більш схильне до перегонів, тому що, коли дані про
труби надходять на озброєння,

Це правда @ LưuVĩnhPhúc, але мені цікаво, чим це відрізняється від того, як topнасправді працює.
крижана вода

1
@icedwater topчитає список процесів і відображає результат самостійно, не
переходячи

87

Правильна відповідь :

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

Таким чином, ви можете вказати стовпці, не заважаючи сортувати.

Наприклад:

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

Примітка для MAC OS X : У Mac OS X psне розпізнає --sort, але пропонує -rсортувати за поточним використанням процесора. Таким чином, для Mac OS X можна використовувати:

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

3
Це правильна відповідь. Дякую Факундо. Я намагався пояснити іншим, що ви можете використовувати сортування та передавати його, але ps також вбудований з можливістю сортування, і тепер я бачу, що ви також це використовуєте, що чудово.
Луїс Альварадо

2-а команда здається кориснішою ... але перша, здається, показує bash(x2, або headтакож) ps...
Wilf

3
@Wilf Перший - це виділення способів сортування за споживанням процесора без використання команди sort, другий показує, як вказати стовпці, не втручаючись у сортування. Коли щось пояснюється .. завжди краще бути стислим і пояснювати одне за одним.
Факундо Віктор

27

Залежно від ваших потреб, це може бути трохи читабельніше:

ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5

вихід вибірки:

 1.3     4 root     [ksoftirqd/0]
 1.1     9 root     [ksoftirqd/1]
 1.0 17606 nobody   /usr/sbin/gmetad
 1.0    13 root     [ksoftirqd/2]
 0.3 17401 nobody   /usr/sbin/gmond

(поля% CPU, PID, USER, COMMAND)


22

Я не думаю ps, що ви шукаєте. Ви подивилися на вихід top?

Якщо у вас є GNU-Top, спробуйте використовувати його пакетний режим, щоб виплюнути список процесів, відсортований за використанням процесора та використовуючи голову / хвіст, щоб отримати топ-5 рядків (перші 8 - заголовки):

top -b -n 1 | head -n 12  | tail -n 5

Здається, верх BSD поводиться по-різному і не має неінтерактивного режиму, тому використовуйте одне з інших psрішень на основі.


1
В OS X - top -o cpu -n 5це спосіб досягти того ж самого. Хтось знає? Моя topвідрізняється від вашої top.
boehj

Ви той, хто має іншу вершину, тому ви зможете сказати. У моїй вершині немає -oі -nвстановлює кількість разів оновлення дисплея перед тим, як вийти з нього.
Калеб

Досить справедливо. Я завітаю на скриньку Linux сьогодні вдень і погляну. Моя, topздається, не має пакетного режиму, що досить обмежує. Повинен бути якийсь спосіб перенесення topв інші команди. Я проведу кілька досліджень.
boehj

У своїй відповіді я згадав перемикач пакетного режиму, але він фактично непотрібний для мого верху, оскільки він автоматично виявляє частину каналу замість інтерактивного сеансу. Ви спробували просто без трубопроводів?
Калеб

1
Зроблю. GNU topпрацював так, як описано сьогодні вдень. Ура.
boehj

6

Найшвидший один лайнер, який я знайшов для цього (примітка 6, оскільки заголовка додається):

ps aux k-pcpu | head -6

5

Зауважте, що поточні версії ps мають можливість сортування всередині них, ґрунтуючись на кодах полів (наведених на сторінці man ps). Код поля для використання процесора - "c". Ви можете використовувати --sort cв кінці команди ps, наприкладps aux --sort c

Це поставить процес з використанням самого процесора в нижній частині списку. Зворотний порядок списку додаючи мінус до коду поля, який використовується для сортування, наприкладps aux --sort -c


4

Щоб додати крапку до інших цінних відповідей, я віддаю перевагу:

ps auxk-c | head -6

Він також друкує заголовок, що добре.

Тут kідентично --sortі cвказується %cpuполе використання процесора (псевдонім ) для сортування, тоді -як для зворотного сортування.

Ви можете додати більше специфікаторів розділених ,, інші можливі специфікатор: %mem, args, bsdstart, pid, gid, uid... , які ви можете знайти повний список в стандартному форматі специфікатор розділі сторінки людини. Наприклад:

 ps auxk -gid,-%mem | head -11

буде надруковано 10 процесів з найвищим ідентифікатором групи, внутрішньо відсортованих за використанням пам'яті.


3

Інструмент командного рядка psмає свій варіант сортування, тому я віддаю перевагу:

$ ps -eo pcpu,args --sort=-%cpu | head

Ви можете додати потрібні стовпці. Подивіться, які інші варіанти доступні на psсторінці man.

$ man ps

0

topна Mac OS X є опція режиму реєстрації у формі top -l numberOfSamples(що, здається, еквівалентно пакетному режиму GNU top). Однак необхідно мати принаймні два зразки, оскільки "перший відображений зразок матиме недійсний% CPU для кожного процесу, оскільки він обчислюється за допомогою дельти між зразками" ( man 1 top).

# examples
top -o cpu -l 2 -n 5 | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu -U $(logname) | tail -n 6

0

topвідобразиться, що використовує ваш процесор. Якщо він встановлений, це htopдозволяє вам більш дрібно контролювати, включаючи фільтрування - у вашому випадку - процесором.


0

Я вважаю, що найпростіший спосіб побачити топ-5 процесорів, що споживають процесор ,

ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5

Щоб побачити топ-5 процес, який займає пам'ять ,

ps -eo pid,comm,%cpu,%mem --sort=-%mem | head -n 5

Де,

-e : Цей прапор використовується для вибору всього процесу

-o : Цей прапор використовується для форматування, визначеного користувачем.

pid : Цей аргумент використовується для показу pid

comm: Цей аргумент використовується лише для відображення імені команди. Щоб отримати повне використання команди args, cmdабоcommand

%cpu: Цей аргумент показує відсоток використання процесора у форматі "##. #". Тут pcpuтакож можна використовувати.

%mem: Цей аргумент показує відношення розміру набору резидента процесу до фізичної пам'яті на машині, виражене у відсотках. Тут pmemтакож можна використовувати.

--sort: Вкажіть порядок сортування. Після =цього -знак використовується для сортування найвищого значення вгорі, де за замовчуванням +є список, що збільшує числовий порядок [тобто 0 до n].


-2

top -bn1 |sed -n '7,12'pтакож працює як хороший маленький лайнер.
Хоча я вважаю за краще використовувати ps із --sort = X -o X, Y, Z

використовуючи PS, ви можете витягнути різні статистичні дані grep для користувача АБО, а потім загально АБО поповнити їх трубою для пробудження

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.