As outras respostas são muito boas e basicamente envolvem sua solução ad hoc de ps | grep
em um alias ou função do shell. Não há nada de errado com essa abordagem. Observe, no entanto, que isso significa que ps
estará extraindo informações para todos os processos em execução e, em seguida, você terá awk
ou grep
filtrando as linhas de interesse.
Eu sugeriria que é um pouco mais eficiente usar pgrep
para obter uma lista de PIDs (como você mostra na sua pergunta) e usar ps
para obter o formato de saída desejado apenas para os PIDs correspondidos por pgrep
.
Correspondência de processo simples, lista completa do POSIX
pg() {
pids='pgrep -d, ""'
[ "$pids" ] && ps -f -p "$pids"
}
pg myprocess
Isso mostra uma listagem ps
completa dos nomes dos processos correspondentes. Esta definição de função pode ser adicionada a ~/.bashrc
para ser sempre definida no seu shell interativo. Isso também pode ser modificado de algumas maneiras diferentes para alterar o formato de saída ou para corresponder a linhas de comando completas em vez de apenas o nome do processo.
Correspondência de processo simples, lista usuário do estilo BSD
pg() {
pids='pgrep -d, ""'
[ "$pids" ] && ps up "$pids"
}
Correspondência de linha de comando completa, lista de controle de trabalho
do estilo BSD
pg() {
pids='pgrep -f -d, ""'
[ "$pids" ] && ps jp "$pids"
}
Correspondência de linha de comando completa, lista longa do POSIX
pg() {
pids='pgrep -f -d, ""'
[ "$pids" ] && ps -l -p "$pids"
}
Observe a opção -f
em pgrep
nos dois últimos exemplos para corresponder na linha de comando completa. Você pode alterar esses exemplos para atender às suas necessidades, a parte importante é que a opção p
ou -p
é fornecida com a lista de PIDs encontrados por pgrep
.