Как я могу посчитать количество спящих процессов в моей системе?

Как подсчитать количество спящих процессов, используя скрипт оболочки?

7
задан 29 December 2016 в 01:42

4 ответа

Расширенное объяснение... доверяя Вам для принятия всего этого, так как это - домашняя работа...

Список обрабатывает с ps команда

$ ps
  PID TTY          TIME CMD
 4879 pts/3    00:00:00 bash
 5003 pts/3    00:00:00 ps

О, это только показывает процессы текущей сессии. Мы хотим показать все процессы в системе. Для этого мы можем использовать -e флаг

$ ps -e
  PID TTY          TIME CMD
    1 ?        00:00:05 systemd
    2 ?        00:00:00 kthreadd
    3 ?        00:00:00 ksoftirqd/0
[and many more lines]

но как мы показываем, которые спят??

Можно использовать -l опция или u опция. Это предоставляет больше подробной информации включая состояние процесса. Ждущие процессы имеют букву S или D в столбце STAT

от man ps

ОБРАБОТАЙТЕ КОДЫ СОСТОЯНИЯ, Вот различные значения, что s, статистика и указывают, что выходные спецификаторы (заголовок "СТАТИСТИКА" или "S") отобразятся для описания состояния процесса:

           D    uninterruptible sleep (usually IO)
           R    running or runnable (on run queue)
           S    interruptible sleep (waiting for an event to complete)
           T    stopped by job control signal
           t    stopped by debugger during the tracing
           W    paging (not valid since the 2.6.xx kernel)
           X    dead (should never be seen)
           Z    defunct ("zombie") process, terminated but not reaped by its parent

Мы можем отформатировать ps вывод, чтобы показать ТОЛЬКО состояния, помочь считать их:

ps -e -o state

здесь мы используем -e получить все процессы и -o флаг, сопровождаемый типом вывода, мы хотим. Эта команда выводы только буква состояния. Мы можем затем передать по каналу (использование |) этот вывод к grep считать строки с S или D, ждущие процессы:

ps -e -o state | grep -cE 'S|D'

grep поиски текста. -c опция говорит этому только считать соответствия вместо того, чтобы произвести сам найденный текст. -E опция говорит grep использовать расширенный regex, так, чтобы мы могли использовать | символы для соответствия вещи ИЛИ материалу с помощью выражения: thing|stuff. При использовании regex, используйте одинарные кавычки для предотвращения расширений оболочкой.

8
ответ дан 29 December 2016 в 01:42
  • 1
    @HaykoKarapetyan: Я предполагаю, что Вы имеете в виду 14.04. Нет извините, that' s не, как это работает. Возможно, помогло бы, отредактировали ли Вы свой вопрос и объяснили, что точно это - Вы, хотят достигнуть. – Gunnar Hjalmarsson 19 October 2018 в 00:40

Очень легкий, если Вы знаете, что ps выходное состояние команды для ждущих процессов как любой S для прерываемого сна и D для бесперебойного сна, и можно использовать -o s флаг для нахождения состояния тех. Теперь все, что необходимо сделать, должно выполнить вывод до grep, который будет считать случаи тех флагов. Как так:

$ ps -e -o s | grep -o 'S\|D' -c                                                                                         
260
0
ответ дан 29 December 2016 в 01:42
  • 1
    Извините, я имею в виду 14,04 версий. Как мы можем перевести 18.04 и были, я могу найти ссылку для этого? – Hayko Karapetyan 19 October 2018 в 04:51

top утилита обеспечивает количество задач, показывая, сколько работает, и сколько спит. Конечно, это изменяется на мгновение за мгновением основание, но так было бы вывод любой из этих острот. Как с любым *отклоняют утилиту, man, страница предоставит большую подробную информацию.

0
ответ дан 29 December 2016 в 01:42
  • 1
    Я пытался проверить USB-порты с живой флеш-картой, но та же ошибка происходит. – Amzocks 18 October 2018 в 11:11

Иначе должен перечислить количество процессов в каждом состоянии при помощи:

$ ps -e -o state | sort | uniq -c
  1 R
141 S
0
ответ дан 16 April 2019 в 12:45
  • 1
    @HaykoKarapetyan: Мой ответ выше включает ссылку на армянскую команду переводчиков и I' d советуют Вам связываться с ними. Надо надеяться, они в состоянии вести Вас далее. Иначе, и если Вы хотите помочь с армянскими переводами Ubuntu, добавить сообщение к эти список рассылки переводчиков человечности (подпишитесь сначала). – Gunnar Hjalmarsson 18 October 2018 в 20:52

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

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