Existe alguma maneira de pgrep
me dar todas as informações sobre cada processo que ps
faz? Eu sei que posso ps
passar, grep
mas isso é muita digitação e também me dá o grep
processo que eu não quero.
26
pgrep
As opções de saída do são bastante limitadas. Você quase certamente precisará enviá-lo de volta ps
para obter as informações importantes. Você pode automatizar isso usando uma função bash no seu ~/.bashrc
.
function ppgrep() { pgrep "$@" | xargs --no-run-if-empty ps fp; }
Em seguida, chame o comando com.
ppgrep <pattern>
function ppgrep() { pgrep "$@" | xargs ps fp 2> /dev/null; }
Caso contrário, se nenhum processo corresponder à sua pesquisa, ele despeja toda umaps
megilla de uso.ps
necessário um hífen para os sinalizadores:function ppgrep() { pgrep "$@" | xargs ps -fp 2> /dev/null; }
-r
que somente executará o comando se tiver recebido uma lista.ps fp $(pgrep -d, "$@")
Combine
pgrep
com ops
usoxargs
!Por exemplo, tente
para obter uma lista completa de processos
user
.É bom que você mantenha a primeira linha com os nomes das colunas.
grep
sempre descarta os nomes das colunas.fonte
A seguir, você fornece apenas PID + linha de comando completa. Para "todas as informações
ps
", consulte outras respostas ...A maioria dos linuxes usa procps-ng . Desde o 3.3.4 (lançado em 2012),
pgrep -a
(--list-full
) mostra a linha de comando completa.Nota: Por padrão, o pgrep corresponde apenas ao padrão fornecido com o nome do executável. Se você deseja comparar com a linha de comando completa (como grepping ps faz), adicione a opção
-f
(--full
).Nas versões mais antigas (incluindo o projeto procps original ), a
-l
opção mostrava informações, mas seu comportamento variava:pgrep -fl
combinou o padrão com a linha de comando completa e mostrou a linha de comando completa.pgrep -l
sozinho correspondia apenas ao nome do executável e mostrava apenas o nome do executável.Se você não quiser uma correspondência completa, não poderá ver a linha de comando completa :-( [ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526355#15 ]
Não tenho certeza de qual código o BSD usa, mas sua página de manual documenta o
-fl
comportamento antigo .Infelizmente você não pode nem usar
-fl
portável - nos procps-ng recentes,-f
(--list-name
) sempre imprime apenas o nome do executável.fonte
Linux
Para a versão de GNU
pgrep
o-i
(caso-insensibilidade) não é suportada, e comprida + saída distorcido é conseguido com-af
.Página de manual :
Mac OS
No OSX (e por inferência, no BSD)
-l
( saída longa ), em combinação com-f
( correspondência com listas completas de argumentos ), será exibido o comando completo (-i
adiciona distinção entre maiúsculas e minúsculas):A página do manual :
fonte
Use a opção -v para grep - ele retorna tudo, exceto o padrão solicitado.
fonte
pgrep -u user | xargs ps -f -p
Eu não acho que exista, o máximo de informações que você pode obter é o nome e a identificação do processo usando a opção -l no pgrep.
O ps suporta todos os tipos de opções de formatação, por isso, basta criar um alias para o que você deseja salvar a digitação. Uma maneira simples de excluir o processo grep da saída é incluir um canal adicional
grep -v grep
para excluir qualquer processo grep.fonte
Para eliminar o
grep
processo, você pode usar colchetes como parte do seu padrão:Você pode fazer isso com
ps
epgrep
:fonte
Isso irá ajudá-lo, eu acho:
ps auxww
fonte