sinalizar para o comando 'ps' que pode filtrar argumentos?

sinalizar para o comando 'ps' que pode filtrar argumentos?

Eu conheço o argumento "-C" que pode filtrar o comando.

Mas no meu cenário posso ter alguns processos com o mesmo nome de processo e argumentos diferentes.

Como filtrar esses argumentos?

(Eu sei que poderia canalizar para grep mais tarde, mas isso não é 100% preciso. Ou seja: quando um argumento pode conter outro argumento, como se eu quisesse filtrar pela "barra" de argumento nesta lista:

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

PS: Suponho que a maioria das respostas me recomendará usar "pgrep" em vez de "ps", mas gostaria de evitar isso, se possível.

Responder1

Eu não acho que você possa conseguir isso pssozinho. Você está certo ao dizer que filtrar usando grepnão é o ideal, mas se estiver disposto a dar pgrepuma chance, poderá chegar bem perto de sua necessidade com:

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

A -fopção pgreppesquisa a linha de comando completa (em vez de apenas o nome do processo), enquanto a -dopção especifica o delimitador a ser usado para encadear os pids.

Passar a lista pid pslimita assim a saída àquelas que contêm a palavra-chave no comando completo (que inclui os argumentos).

No seu exemplo, onde você deseja corresponder "foo bar", mas não "foo barbaz", você procura uma correspondência exata com:

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

Responder2

Não acredito que tal opção exista - pelo menos não existe na minha versão do ps. Duvido que muitas psimplementações por aí tenham essa opção - o nome do comando é bastante simples de definir, o que definitivamente não é o caso quando se trata de argumentos de comando.

De qualquer forma, a filosofia do Unix é encadear muitas ferramentas simples (por exemplo, pse grep) para executar tarefas mais complexas. Alguém poderia argumentar que até ps -Cestá forçando isso - na verdade, acredito que o MacOS X psnão tem essa opção.

O que exatamente você está tentando fazer?O que écontextopara sua pergunta? Porque, pela minha experiência, em 99% dos casos em que as pessoas estão automatizando coisas analisando o resultado, pselas estão fazendo tudo o que estão fazendo da maneira errada...

informação relacionada