Как найти спящий процесс в Ubuntu?

Есть ли способ найти спящие процессы в Ubuntu?

Я вижу, что top может перечислить количество спящих процессов, но я хочу, чтобы они были перечислены с их именем.

Есть ли команды для этого?

7
задан 26 October 2017 в 07:05

4 ответа

Попробуйте:

ps o state,command axh | grep "^[SD]" | cut -b 3-

для вывода списка команд процессов с прерывистым и непрерывным режимом сна.

  • ps выводит только состояние и команды всех процессов (ax), а h удаляет строку заголовка.
  • grep фильтрует процессы, отличные от двух состояний сна.
  • cut используется для повторного удаления выходных данных состояния.
  • При желании замените command на ucmd, если вам не нужно полное имя, включая все аргументы.

Это, вероятно, неоптимальный сценарий здесь, но я не смог найти быстрый способ фильтрации ps для определенного состояния.

0
ответ дан 26 October 2017 в 07:05
ps -e S 

покажет вам процессы сна.

0
ответ дан 26 October 2017 в 07:05

Вы можете получить информацию сверху, которую можно запустить в пакетном режиме (-b).

top -bn1 | awk 'NR > 7 && $8 ~ /S|D/ { print $12 }'
  • -n1 Топ работает только один раз и выходит.
  • NR > 7 пропускает заголовок.
  • $8 ~ /S|D/ выбирает программы, которые находятся в состоянии D или S.

Возможные состояния, из top(1):

      'D' = uninterruptible sleep
      'R' = running
      'S' = sleeping
      'T' = traced or stopped
      'Z' = zombie
0
ответ дан 26 October 2017 в 07:05

Использование awk и ps

ps o pid,state,command | \
    awk ' {if ($2 == "T") {printf "%s\t%s\t%s\n","Sleeping",$1,$3};}'

Пример

Запустить mc в терминале, открыть новый терминал и запустить команды ниже

kill -STOP $(pgrep mc)
ps o pid,state,command | \
    awk ' {if ($2 == "T") {printf "%s\t%s\t%s\n","Sleeping",$1,$3};}'

Выходные данные

Sleeping    21668   mc
0
ответ дан 26 October 2017 в 07:05

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

Похожие вопросы: