Se a sua versão de pgrep
suportar a opção -d
( --delimiter
), você poderá usá-la para fornecer uma lista de PIDs separados por vírgula para top
:
top -o S -d 0 -p "$(pgrep -d, -u <user> -f maxima.core)"
Eu vi essa boa pergunta:
Passe a saída do anterior comando para o próximo como um argumento
e tentou conseguir o que eu queria, mas sem sorte.
Muitas vezes eu quero assistir ao meu processo maxima / lisp e ao invés de executar o top / htop / etc eu pensei que poderia apenas procurar por "maxima.core" e usar o pid retornado da pesquisa como entrada para o "-p" bandeira para o topo. Se retornar mais de um, não é um grande negócio.
1.) Se eu conheço o PID, posso usar isto:
top -p 10815 -o S -d 0
2.) Para obter o PID (s) eu faço isso:
ps -fu <user> | pgrep -f maxima.core
que gera uma lista como
10814
11989
Mas tentando concatená-los falha para mim. Minhas tentativas centraram-se principalmente em torno disso:
<user>@<user> ~ $ top -o S -d 0 -p $(ps -fu <user> | pgrep -f maxima.core)
Também tentou incorporar os resultados disso: > Como posso obter os parâmetros posicionais, a partir de dois, ou mais geralmente, 'n'?
top -o S -d 0 -p "${(ps -fu <user> | pgrep -f maxima.core)[@]}"
mas reclamou de substituição pobre.
Eu praticamente confio em bash.