Você também pode lidar com a ps
saída um pouco melhor.
ps --width ${n:-$COLUMNS} ${opts} #set ps terminal width
ps -ww ${opts} #no word wrap
ps -o ${only_interesting_output} ${opts} #trim output
Isso indicará ps
para analisar sua saída com suas especificações, conforme necessário.
É claro que, se você não usar quebra de linha, terá o problema de perder informações. Você realmente precisa de tudo isso para todos os processos? Abra-o em um pager, se houver:
ps ww ${opts} | $PAGER
Caso contrário, especifique o que você deseja ver:
ps -o args= -p $pid
Como alternativa, você pode informar explicitamente sobre o ps
seu terminal --width
:
man ps
...
w
Ampla saída. Use esta opção duas vezes para largura ilimitada.
-w
Ampla saída. Use esta opção duas vezes para largura ilimitada.
--width n
Defina a largura da tela.
A --width
coisa funciona exatamente com as especificações solicitadas, sem a necessidade de envolver filtros adicionais ou processos auxiliares (o que provavelmente sobrecarregará -aux
ainda mais a sua saída). E com $COLUMNS
como mostrado acima e como Stephane aponta, ele funcionará dinamicamente.
Provavelmente é importante notar, porém, que acho que as pessoas muitas vezes tentam adicionar estes tipos de filtros desnecessários para que possam acomodar um |pipe
através de outro filtro para a saída de análise que é também bastante provável que seja desnecessário. Claro, pelas pessoas eu principalmente me refiro .
O -o
operando utput que mencionei acima permite filtrar quais colunas são ps
exibidas e, quando você adiciona a =
atribuição, pode até nomear a coluna como desejar. Deixo a atribuição vazia e entregá-lo um alvo -p
rocess $pid
então a única saída ps
em tudo é o $pid
nome do comando e sua args
a invocação. E -o
mal arranha a superfície de como você pode definir o que ps
será ou não exibido. Esta é a direção que eu recomendo que você tome, especialmente via:
man ps
...
Para ver todos os processos no sistema usando a sintaxe BSD:
ps ax
ps axu
Para imprimir uma árvore de processo:
ps -ejH
ps axjf
Para obter informações sobre tópicos:
ps -eLf
ps axms
Para obter informações de segurança:
ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM
Para ver todos os processos em execução como raiz (ID real e efetivo) no formato do usuário:
ps -U root -u root u
Para ver todos os processos com um formato definido pelo usuário:
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -Ao pid,tt,user,fname,tmout,f,wchan
Imprima apenas os IDs do processo de syslogd:
ps -C syslogd -o pid=
Imprima apenas o nome do PID 42:
ps -p 42 -o comm=