O que o ps axuwfw retorna?

0

Estou obtendo uma saída estranha, incluindo minha antiga saída do makefile e a árvore de processos quando estou executando o comando abaixo no linux

ps axuwfw

Além disso, qual é a utilidade do seguinte comando e como ele funciona?

ps axuwfw | grep -v grep | grep -i screen

ps axuwfw | grep -v grep | grep -i tmux

Os dois comandos acima retornam 431 e 7 no exemplo de aqui , mas no meu sistema ele retorna alguns anteriormente executava a saída mais antiga do makefile e a árvore de processos truncada.

    
por manav m-n 25.04.2014 / 10:14

1 resposta

6
ps axuwfw

Esta é uma combinação de várias opções no estilo BSD (todas na página de manual, man ps ):

  • a : inclua processos de outros usuários
  • x : inclua processos sem terminal
  • u : mostra campos de informação orientados para o usuário
  • w : saída ampla (132 colunas em vez de 80)
  • f : "forest": visão em árvore dos processos
  • w : saída ainda maior (sem limite)

Em outras palavras, ele simplesmente mostra os processos atualmente em execução.

No entanto, se você ver antigo processos lá, verifique o campo "STAT" - se ele diz Z , o processo foi encerrado, mas seu pai ainda não o "colheu"; o processo é um "zumbi". Isso geralmente indica que o processo pai está com um pouco de bugs ou travou / travou.

Além disso, observe que nem todos os sistemas operacionais aceitam essas opções. No SysV, pode ser ps -ef .

ps axuwfw | grep -v grep | grep -i screen

O | é um pipe. Ele redireciona a saída de um comando para a entrada do outro. Isso deve tornar mais óbvio que o acima não é apenas um comando mágico estranho; são três comandos conectados.

  1. O primeiro comando, ps axuwfw , já foi explicado.

  2. grep , é para pesquisar / filtrar texto. grep foo imprimiria apenas linhas de entrada que contenham o texto "foo". Com a opção -v , o segundo comando - grep -v … - faz o oposto - imprime linhas que não correspondem . (Novamente, consulte man grep ou grep --help .)

    Essa chamada específica é necessária porque todos os processos em um pipeline são executados ao mesmo tempo, portanto, o ps… mostraria todos os grep… processos - e ps axu | grep screen faria com que o grep… também correspondesse à sua própria entrada além dos desejados. Então, um segundo grep… é adicionado para ignorar explicitamente as linhas que têm "grep" nelas.

    (Claro, existem ferramentas melhores, como pgrep -alf screen , mas muitas pessoas ainda usam esse tipo de ps|grep|grep… pipeline só porque é fácil combinar sabendo apenas ps e grep .)

  3. O terceiro comando, grep -i screen , apenas extrai linhas que contêm "tela".

    Conforme descrito na página de manual e na saída grep --help , adicionar a opção -i torna a pesquisa insensível a maiúsculas e minúsculas, de modo que também gera linhas com "Tela" ou "SCREEN" nelas.

Em suma, o comando completo apenas imprime as ps… linhas que falam sobre o programa "screen".

"The above two commands return 431 and 7 in the example from here…"

Eles não. Eles retornam informações sobre processos denominados "screen" ou "tmux". O número dado no exemplo é o contagem dos processos retornados.

O autor do slideshow não incluiu a saída completa (o que não é realmente relevante); eles incluíram apenas o total de contagens como um resumo, demonstrando que há 60 vezes mais usuários de "tela" do que usuários "tmux".

Se você quiser que o comando conte linhas para você, você pode a) adicionar a opção -c (contagem) ao comando último grep… , ou b) percorrê-lo por% código%. (Ou funciona.)

"…but in my system it returns garbage."

It returns some previously ran older makefile output and truncated process tree

Isso não é lixo - é exatamente a saída que você pediu.

    
por 25.04.2014 / 10:45