Você também pode lidar com ps
output 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 dirá ps
para analisar sua saída conforme suas especificações, conforme necessário.
Claro, se você não quebra a palavra, você tem o problema de perder informações. Você realmente precisa de tudo isso para todos os processos? Abra-o em um pager, se assim for:
ps ww ${opts} | $PAGER
Se não, especifique o que você deseja ver:
ps -o args= -p $pid
Como alternativa, você pode informar explicitamente ps
do seu terminal --width
:
man ps
...
w
Wide output. Use this option twice for unlimited width.
-w
Wide output. Use this option twice for unlimited width.
--width n
Set screen width.
A coisa --width
funciona exatamente com as especificações solicitadas sem a necessidade de envolver filtros adicionais ou processos auxiliares (o que provavelmente sobrecarregará ainda mais sua -aux
de saída). E com $COLUMNS
como mostrado acima e como Stephane aponta, ele vai até funcionar dinamicamente.
Provavelmente, é interessante notar que muitas vezes as pessoas tentam adicionar esse tipo de filtro desnecessário para acomodar um filtro |pipe
através de outro para analisar a saída, o que também é bastante provável ser desnecessário. É claro que, por pessoas , eu quero dizer mim.
O operando -o
utput que mencionei acima permite que você filtre quais colunas ps
exibem, e quando você adiciona o =
assigment, você pode até nomear a coluna como quiser. Eu deixo a atribuição vazia e entrego a ela um destino -p
rocess $pid
, então a única saída de ps
é o nome do comando $pid
e seu args
na invocação. E -o
apenas arranha a superfície de como você pode definir o que ps
irá ou não exibir. Essa é a direção que eu recomendaria que você fizesse, especialmente por meio de:
man ps
...
To see every process on the system using BSD syntax:
ps ax
ps axu
Para imprimir uma árvore de processos:
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 efetiva) 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
Imprimir apenas os IDs do processo do syslogd:
ps -C syslogd -o pid=
Imprimir apenas o nome do PID 42:
ps -p 42 -o comm=