Use -o
flag.
Para listar apenas seus próprios processos
ps -o command
Para listar todos os processos do sistema
ps -e -o command
Essa não é a única maneira de listar comandos, eles podem ser impressos com sinalizadores de linha de comando ou apenas como executáveis (que é a command
opção).
Do meu comentário abaixo a resposta:
command, args e cmd fornecem comando completo. De fato, man page states command e cmd são aliases para args, com os sinalizadores - incluídos. A comunicação fornece apenas o nome do exacutável. Aliases para isso são ucmd e ucomm. Eu li mal as opções do AIX, elas podem ser especificadas com o formato do tipo printf,% a para args,% c para comm
Consulte para man ps
obter mais informações sobre uso e opções de formato disponíveis
A abordagem programática seria um pouco redundante, uma vez que ps
já nos fornece as opções de formatação, mas isso pode ser feito awk
, o que é muito útil ao lidar com saída em colunas.
ps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
Observe, no entanto, que esse código quebra se o nome de usuário contiver espaço em branco, por exemplo john doe
. Isso pode ser alterado com a adição de uma gsub
função que elimina seu nome de usuário da ps
lista. No entanto, se houver vários usuários conectados ao sistema, pode ser difícil apagar todos os nomes de usuários da saída. Assim, você pode ver que a -o
bandeira é muito mais preferida.
Nota lateral, sudo
não é necessário para listar todos os processos comps
ps -eo command
&ps -eo comm
? A única diferença que foi encontradocommand
na saída foi tais como:[kthreadd]
enquanto que nacomm
saída foi como este:kthreadd
. Isso significa alguma coisa?comm
é o formato AIX, ondecommand
é o estilo GNU padrão. O AIX é outro sistema semelhante ao * NIX, portanto essa opção pode ser usada para compatibilidade. Caso contrário, não há diferença #diff <(ps -eo comm) <(ps -eo command)
e parece haver um barulho lá embaixo, você pode esclarecer?awk
solução falha se um nome de usuário contiver espaços ( aqui ); também talvez apenasps aux | awk '{ for(i=11;i<=NF;i++) {printf $i" "}; printf "\n" }'
?command
,args
ecmd
todos dão o comando total. De fato, a página de manual declaracommand
ecmd
é alias paraargs
, com os-
sinalizadores incluídos. Ocomm
fornece apenas o nome do exacutável. Aliases para que sãoucmd
eucomm
. Eu mal interpretado sobre as opções AIX, aqueles podem ser realmente especificado com printf-como formato,% a para args,% c para commUma maneira mais genérica. Nós determinamos a coluna do comando. Dessa maneira, não importa para quais opções são usadas
ps
.Saída de amostra
E o que é isso
pstree
?Saída de amostra
fonte
Eu encontrei uma maneira bash de conseguir isso daqui
sudo ps aux | rev | cut -d ' ' -f 1 | rev
rev
inverte a saídaps
e, em seguida, corta pode ajudá-lo a delimitar o primeiro campo (que é o último!) e depois reverter novamente ...trabalhou para mim.
fonte
ps aux
ele próprio será listado comoaux
.sudo
não é necessáriops
e o comando recorta muitos comandos; portanto, não é muito preciso; se você quiser trabalhar com colunas, useawk
-o muito melhor para essa tarefa. De fato, o comando exato seriaps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
awk
deve trabalhar nisso.sudo ps
e eu penseiawk
que seria muito complicado para esta tarefa e que saiu com elacut
. De qualquer forma, você não deve atualizar sua resposta com esse código para que o OP possa aceitá-lo?ps
simplesmente não é cegamente analisável. Eu acho que o único método seguro aqui éps -e -o
.