Можно ли использовать команду ps отдельно для фильтрации до подмножества результатов, а не для создания надмножества?
Например, ps -C
дает мне все процессы
, а ps -u
дает мне все процессы, принадлежащие <пользователь>
. Но ps -C
дает мне все процессы с именем
или все процессы, принадлежащие
, когда мне действительно нужны все процессы с именем
и все процессы, принадлежащие
.
Очевидно, я могу фильтровать с помощью grep, но я было интересно, можно ли достичь того, что мне нужно, с помощью ps самостоятельно.
Я использую -C
и -u
в качестве примера, но на самом деле Я бы хотел более общий способ комбинирования любого из фильтров ps с помощью 'и', а не 'или'.
Нет; это задокументировано на справочной странице:
За исключением случаев, описанных ниже, параметры выбора процесса являются аддитивными. Выбор по умолчанию отбрасывается, а затем выбранные процессы добавляются в набор отображаемых процессов. Процесс будет таким образом, будет показано, если он соответствует любому из заданных критериев отбора.
Исключение:
--deselect
Select all processes except those that fulfill the specified
conditions (negates the selection). Identical to -N
...
-N Select all processes except those that fulfill the specified
conditions (negates the selection). Identical to --deselect.
(Конечно, НЕ (A ИЛИ B) = (NOT A) AND (NOT B), так что вы можете что-нибудь придумать, если вас больше интересуют отрицательные совпадения, но иначе это было бы слишком громоздко.)