Cygwin: Отримайте стан процесу


0

Коли я бігаю topв Cygwin, я отримую:

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

Я хочу витягнути ці стовпці для всіх процесів:

PID PPID S COMMAND

ps дає PID, PPID та COMMAND, але як мені отримати стовпчик 'S' для всіх процесів?

Редагувати:

Я не можу використовувати те, що я використовую в GNU / Linux:

$ ps -e -o pid,ppid,state,comm
ps: unknown option -- o
Try `ps --help' for more information.

$ ps --version
ps (cygwin) 1.7.33
Show process statistics
Copyright (C) 1996 - 2014 Red Hat, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ ps --help
Usage: ps [-aefls] [-u UID] [-p PID]

Report process status

 -a, --all       show processes of all users
 -e, --everyone  show processes of all users
 -f, --full      show process uids, ppids
 -h, --help      output usage information and exit
 -l, --long      show process uids, ppids, pgids, winpids
 -p, --process   show information for specified PID
 -s, --summary   show process summary
 -u, --user      list processes owned by UID
 -V, --version   output version information and exit
 -W, --windows   show windows as well as cygwin processes

With no options, ps outputs the long format by default

procps
:
version: 3.2.8-3

Відповіді:


1

За замовчуванням topне відображається PPID (принаймні, у CygWin). Крім того, ви можете використовувати пакетний режим верху, використовуючи -bперемикач у поєднанні з -n 1комутатором (запустити один раз). Я раніше awkпропускав перші рядки і робив приблизний вибір стовпців.

top -b -n 1 | awk 'NR>6 { print $1, $8, $12 }'


Це, здається, працює, але жахливо повільно (600 мс проти, ps '20 мс). Можна topприскорити?
Оле Танге

600 мс (або 0,6 сек) - це приблизно та сама продуктивність, яку я отримую; верх повільний, не буденний. Крім того, на моєму Debian це йде дуже швидко. Я спробував strace, щоб з'ясувати, на яке ядро ​​називає це відставання, але це не дало багато розуміння. Я вважаю, що взаємодія між CygWin та базовою ОС Windows спричиняє затримку. Немає поняття, чому ps набагато швидше.
agtoever

З трохи більше злому (пакетного сценарію) ви можете прочитати всі /proc/<pid>/statusфайли, показуючи всі потрібні стовпці.
agtoever

grep State /proc/*/statusздається досить швидким.
Оле Танге

0

Можна використовувати ps -e -o pid,ppid,state,comm


Дивіться мою редакцію, чому це не працює.
Оле Танге

Що ps --helpдає тобі?
Ламберт

Дивіться редагування для --help
Ole Tange

Зауважте, що в ОП використовується Cygwin, який використовує смугасту версію ps.
agtoever

0

Це стало вирішенням:

perl -ne '/Name/ and print"\n";/(Name|Pid|Ppid|State):\s+(\S+)/ and print "$2\t";' /proc/*/status

Дякую аґтовер за натхнення.

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