флаг для команды «ps», которая может фильтровать аргументы?

флаг для команды «ps», которая может фильтровать аргументы?

Я знаю аргумент «-C», который может фильтровать команду.

Но в моем сценарии могут быть некоторые процессы с одинаковым именем и разными аргументами.

Как отфильтровать по этим аргументам?

(Я знаю, что позже я мог бы передать данные в grep, но это не на 100% точно. Например: когда аргумент может содержать другой аргумент, например, если я хочу отфильтровать по аргументу «bar» в этом списке:

+---------+---------+-----------+
| Process | Command | Arguments |
+---------+---------+-----------+
| 23      | foo     | bar       |
| 48      | foo     | barbaz    |
+---------+---------+-----------+

PS: Я предполагаю, что большинство ответов порекомендуют мне использовать «pgrep» вместо «ps», но я бы хотел избежать этого, если это возможно.

решение1

Я не думаю, что вы можете достичь этого, используя psв одиночку. Вы правы, что фильтрация с использованием grepне идеальна, но если вы готовы дать pgrepшанс, то вы можете довольно близко подойти к вашему требованию с помощью:

ps -p $(pgrep -f bar -d',')

Параметр -fзаставляет выполнять pgrepпоиск по всей командной строке (а не только по имени процесса), а -dпараметр указывает разделитель, который будет использоваться для объединения идентификаторов процессов.

Передача списка pid psтаким образом ограничивает вывод теми, которые содержат ключевое слово в полной команде (включая аргументы).

В вашем примере, где вы хотите найти соответствие «foo bar», но не «foo barbaz», вы ищете точное совпадение с помощью:

ps -p $(pgrep -f "foo bar$" -d',')   # Note the eol anchor '$'

решение2

Я не верю, что такая опция существует — по крайней мере, ее нет в моей версии ps. Я сомневаюсь, что psво многих реализациях есть такая опция — имя команды довольно просто определить, чего определенно не происходит, когда дело доходит до аргументов команды.

В любом случае, философия Unix заключается в том, чтобы связать множество простых инструментов (например, psи grep) для выполнения более сложных задач. Можно утверждать, что ps -Cэто даже навязывание - на самом деле я считаю, что у MacOS X psнет такой возможности.

Что именно ты пытаешься сделать?Чтоконтекстна ваш вопрос? Потому что, исходя из моего опыта, в 99% случаев, когда люди автоматизируют что-то, анализируя вывод, psони делают что-то неправильно...

Связанный контент