Como obter o pgrep para exibir informações completas sobre o processo

17

Existe alguma maneira de obter pgrep para me fornecer todas as informações sobre cada processo que ps faz? Eu sei que posso canalizar ps através de grep , mas isso é um monte de digitação e também me dá o processo grep que eu não quero.

    
por JoelFan 22.10.2009 / 14:42

8 respostas

13
As opções de saída do

pgrep são bastante limitadas. Você quase certamente precisará enviá-lo de volta através de 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>
    
por 22.10.2009 / 14:55
11

Combine pgrep com ps usando xargs !

pgrep <your pgrep-criteria> | xargs ps <your ps options> -p

Por exemplo, tente

pgrep -u user | xargs ps -f -p

para obter uma lista completa de processos de user .

É bom que você mantenha a primeira linha com os nomes das colunas. grep sempre elimina os nomes das colunas.

    
por 09.12.2010 / 13:46
6

O seguinte apenas dá a você PID + linha de comando completa. Para "todas as informações ps ", veja outras respostas ...

A maioria dos linuxes usa procps-ng . Desde a versão 3.3.4 (lançada em 2012), pgrep -a ( --list-full ) mostra a linha de comando completa.
Nota: Por padrão, o pgrep corresponde apenas ao padrão que você dá ao nome do executável. Se você quiser combinar com a linha de comando completa (como o grepping faz), adicione a opção -f ( --full ).

Nas versões mais antigas (incluindo os procps originais projeto), a opção -l mostrou informações, mas seu comportamento é variado:

  • pgrep -fl combinou o padrão com a linha de comando completa e mostrou a linha de comando completa.
  • pgrep -l sozinho correspondeu apenas ao nome do executável e mostrou apenas o nome do executável.
    Se você não quiser a correspondência completa, não poderá ver a linha de comando completa :-( [ link

Não sei ao certo que código * o BSD usa, mas a página de manual documenta o comportamento antigo -fl .

Infelizmente, você não pode usar -fl portably - em procps-ng recente, -f ( --list-name ) sempre imprime somente o nome do executável.

    
por 12.08.2014 / 11:28
4

Linux

Para a versão GNU de pgrep , o -i (insensibilidade a maiúsculas e minúsculas) não é suportado e a saída longa + difusa é obtida com -af .

$ pgrep -af apache

OUTPUT:
    1748 /usr/sbin/apache2 -k start

Página do manual :

   -a, --list-full
       List  the  full  command line as well as the process ID.  (pgrep only.)

   -f, --full
       The pattern is normally only matched against the process name.  
       When -f is set, the full command  line is used.

MacOS

No OSX (e por inferência, no BSD) -l ( saída longa ) em combinação com -f (correspondência contra listas de argumentos completos ) exibirá o comando completo ( -i adiciona insensibilidade a maiúsculas e minúsculas):

$ pgrep -fil ssh

OUTPUT:
    33770 ssh: [email protected] [mux] t

A página de manual :

 -l          Long output.  For pgrep, print the
             process name in addition to the
             process ID for each matching
             process.  If used in conjunction
             with -f, print the process ID and
             the full argument list for each
             matching process.  For pkill, dis-
             play the kill command used for
             each process killed.
    
por 13.11.2017 / 21:52
1

Use a opção -v para grep - retorna tudo, MAS o padrão solicitado.

ps -ef | grep <process> | grep -v grep
    
por 22.10.2009 / 15:10
0

Eu não acho que exista, a maioria das informações que você pode obter é o nome e o ID do processo usando a opção -l para pgrep.

ps suporta todos os tipos de opções de formatação, por isso gostaria de fazer um alias para o que você deseja salvar a digitação. Uma maneira simples de excluir o processo do grep da saída nos inclui um canal adicional para grep -v grep para excluir quaisquer processos do grep.

    
por 22.10.2009 / 14:54
0

Para eliminar o processo grep , você pode usar colchetes como parte do seu padrão:

ps -ef | grep '[t]ty'

Você pode fazer isso com ps e pgrep :

ps -fp $(pgrep -d, tty)
    
por 22.10.2009 / 16:17
-1

Isso ajudará você a adivinhar:

ps auxww

    
por 23.07.2015 / 16:35