Как мне отфильтровать по STAT с помощью ps?

Обычно в моих установках с двойной загрузкой я сохраняю отдельные разделы для Windows и Linux, сохраняя также папку / home также внутри раздела Linux. Затем я просто привязываю папки в моей личной папке к папкам, расположенным в разделе данных (E :). Для Windows я делаю то же самое: я сохраняю свою папку User внутри раздела Windows, а затем я создаю символическую ссылку на папки, чтобы указать раздел данных. Этот макет позволяет мне быстро изолировать данные от SO на случай, если какой-либо из них будет поврежден, заражен, сломан, не может быть загружен и т. Д. Если это произойдет, я потеряю только файлы приложения, а не свои личные.

2
11.03.2017, 01:13
2 ответа

ps имеет ограниченные возможности фильтрации, но даже Linux ps с его бесчисленными опциями не может фильтровать по статусу. Поэтому вам понадобится внешний инструмент фильтрации.

Вы можете упростить набор опций. -ax эквивалентен переносимому -e для отображения всех процессов. Вы можете использовать -o вместо подсчета и выбора столбцов с помощью awk.

ps -e -o stat,command | grep '^S '
7
27.01.2020, 21:53

Нет, вероятно, нет способа. ps имеет несколько вариантов выбора процесса, но (по крайней мере, в моей системе) не имеет возможности фильтрации по статусу. Вы можете проверить страницу руководства (man ps) в вашей системе для подтверждения.

Обратите внимание, что использование таких вещей, как awk, grep и т.д. для поиска интересующих вас битов вывода - это нормальный, ожидаемый способ использования оболочки Linux/Unix. Если вы делаете это часто и хотите избежать повторного набора текста, вы можете использовать функцию оболочки, определенную в .bashrc или подобную, или поместить сценарий оболочки где-нибудь в $PATH (часто, $HOME/bin).

Например, функция оболочки, принимающая один аргумент (статус, который нужно искать):

ps_for_stat() {
    ps -aux | awk {'if ($8 ==  "'"$1"'") print $8" "$11'}
}

Вы можете выполнить: ps_for_stat S

2
27.01.2020, 21:53

Теги

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