Відповіді:
Навіщо використовувати, ps
коли ви можете легко це зробити за допомогою top
команди?
Якщо вам потрібно скористатися ps
, спробуйте це:
ps aux | sort -nrk 3,3 | head -n 5
Якщо ви хочете чогось справді 'top'esq з постійними оновленнями, використовуйте годинник
watch "ps aux | sort -nrk 3,3 | head -n 5"
ps aux | sort -nrk 3,3 | head -n 5
top
насправді працює.
top
читає список процесів і відображає результат самостійно, не
Правильна відповідь :
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
bash
(x2, або head
також) ps
...
sort
, другий показує, як вказати стовпці, не втручаючись у сортування. Коли щось пояснюється .. завжди краще бути стислим і пояснювати одне за одним.
Залежно від ваших потреб, це може бути трохи читабельніше:
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)
Я не думаю ps
, що ви шукаєте. Ви подивилися на вихід top
?
Якщо у вас є GNU-Top, спробуйте використовувати його пакетний режим, щоб виплюнути список процесів, відсортований за використанням процесора та використовуючи голову / хвіст, щоб отримати топ-5 рядків (перші 8 - заголовки):
top -b -n 1 | head -n 12 | tail -n 5
Здається, верх BSD поводиться по-різному і не має неінтерактивного режиму, тому використовуйте одне з інших ps
рішень на основі.
top -o cpu -n 5
це спосіб досягти того ж самого. Хтось знає? Моя top
відрізняється від вашої top
.
-o
і -n
встановлює кількість разів оновлення дисплея перед тим, як вийти з нього.
top
здається, не має пакетного режиму, що досить обмежує. Повинен бути якийсь спосіб перенесення top
в інші команди. Я проведу кілька досліджень.
top
працював так, як описано сьогодні вдень. Ура.
Найшвидший один лайнер, який я знайшов для цього (примітка 6, оскільки заголовка додається):
ps aux k-pcpu | head -6
Зауважте, що поточні версії ps мають можливість сортування всередині них, ґрунтуючись на кодах полів (наведених на сторінці man ps). Код поля для використання процесора - "c". Ви можете використовувати --sort c
в кінці команди ps, наприкладps aux --sort c
Це поставить процес з використанням самого процесора в нижній частині списку. Зворотний порядок списку додаючи мінус до коду поля, який використовується для сортування, наприкладps aux --sort -c
Щоб додати крапку до інших цінних відповідей, я віддаю перевагу:
ps auxk-c | head -6
Він також друкує заголовок, що добре.
Тут k
ідентично --sort
і c
вказується %cpu
поле використання процесора (псевдонім ) для сортування, тоді -
як для зворотного сортування.
Ви можете додати більше специфікаторів розділених ,
, інші можливі специфікатор: %mem
, args
, bsdstart
, pid
, gid
, uid
... , які ви можете знайти повний список в стандартному форматі специфікатор розділі сторінки людини. Наприклад:
ps auxk -gid,-%mem | head -11
буде надруковано 10 процесів з найвищим ідентифікатором групи, внутрішньо відсортованих за використанням пам'яті.
Інструмент командного рядка ps
має свій варіант сортування, тому я віддаю перевагу:
$ ps -eo pcpu,args --sort=-%cpu | head
Ви можете додати потрібні стовпці. Подивіться, які інші варіанти доступні на ps
сторінці man.
$ man ps
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
Я вважаю, що найпростіший спосіб побачити топ-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].