ps aux para nomes de usuário com caracteres longos mostra um sinal de mais


18

Estou tentando obter uma saída ps auxpara que pareça com:

giovanni     28331  4381  0 15:43 ?       00:00:00 sshd: giovanni@pts/1
giovanni     28346 28331  0 15:43 pts/1   00:00:00 -bash
giovanni     28646 28346  0 15:43 pts/1   00:00:00 ./example.sh

No entanto, a execução deste comando no Ubuntu 14.04 LTS fornece o seguinte:

giovan+     28331  4381  0 15:43 ?       00:00:00 sshd: giovanni@pts/1
giovan+     28346 28331  0 15:43 pts/1   00:00:00 -bash
giovan+     28646 28346  0 15:43 pts/1   00:00:00 ./example.sh

Então, como posso remover esses sinais de adição e instruir o comando para me mostrar o nome de usuário inteiro?


11
Isso é interessante, meu nome de usuário tem o mesmo tamanho e não é truncado
Jamie

Respostas:


24

De acordo com man ps, ps -auxé "Ver todos os processos no sistema usando a sintaxe padrão (UNIX) ". Não encontrei uma maneira de definir um formato definido pelo usuário para exibir a saída.

No BSD sintaxe no entanto, você pode definir a largura da coluna como: user:<width>. A seguir, você deve fornecer as mesmas informações, configurando a largura da coluna do nome de usuário para 20 (ou qualquer outro valor):

ps axo user:20,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm

saída com nome (muito) longo:

USER                   PID %CPU %MEM    VSZ   RSS TT       STAT  STARTED     TIME COMMAND

.........................................................................................

root                  3826  0.0  0.1  77828  4788 ?        Ss   08:15:55 00:00:00 cupsd
lp                    3831  0.0  0.0  63156  2224 ?        S    08:15:56 00:00:00 dbus
lp                    3832  0.0  0.0  63156  2220 ?        S    08:15:56 00:00:00 dbus
root                  4822  1.7  5.1 446964 210416 tty8    Ss+  08:38:00 00:03:27 Xorg
root                  4923  0.0  0.1 174652  4412 ?        Sl   08:38:02 00:00:00 lightdm
tantemarievanhier     5181  0.0  0.1 544216  4796 ?        Sl   08:38:08 00:00:00 gnome-keyring-d
tantemarievanhier     5228  0.0  0.0  40492  2740 ?        Ss   08:38:08 00:00:00 init
tantemarievanhier     5369  0.0  0.0  41816  3064 ?        Ss   08:38:09 00:00:02 dbus-daemon
tantemarievanhier     5376  0.0  0.0  10616   316 ?        Ss   08:38:09 00:00:00 ssh-agent

configurando a largura da coluna para 7:

ps axo user:7,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm

USER     PID  %CPU %MEM    VSZ   RSS TT       STAT  STARTED     TIME COMMAND

.........................................................................................

tantem+  6623  0.0  0.0 287228  3820 ?        Sl   08:39:00 00:00:00 unity-webapps-s
tantem+  6679  0.0  0.4 676856 18640 ?        Sl   08:39:20 00:00:00 update-notifier
tantem+  6721  0.0  0.1 541224  7056 ?        Sl   08:40:20 00:00:00 deja-dup-monito
tantem+  6743  0.0  0.5 810616 21888 ?        Sl   08:41:55 00:00:00 unity-scope-hom
tantem+  6758  0.0  0.2 717256 10352 ?        Sl   08:41:55 00:00:00 unity-files-dae
tantem+  6760  0.0  0.5 607208 22920 ?        Sl   08:41:55 00:00:00 unity-scope-loa
tantem+  6784  0.0  0.2 350676  9060 ?        Sl   08:41:56 00:00:00 unity-music-dae

Por motivos de conveniência, você pode adicionar a seguinte linha a ~/.bashrc:

alias psaux='ps axo user:20,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm'

então essa ps auxé a saída "normal", enquanto psauxfornece a versão completa do nome.

Nota:

Você também pode mostrar o nome completo movendo a coluna de nome para a última posição:

ps axo pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm,user

dá:

 PID %CPU %MEM    VSZ   RSS TT       STAT  STARTED     TIME COMMAND         USER


 5181  0.0  0.1 544216  4548 ?        Sl   08:38:08 00:00:00 gnome-keyring-d tantemarievanhier
 5228  0.0  0.0  40492  2668 ?        Ss   08:38:08 00:00:00 init            tantemarievanhier
 5369  0.0  0.0  41816  3032 ?        Ss   08:38:09 00:00:07 dbus-daemon     tantemarievanhier

Como exibir a saída, configurando a largura da coluna USER automaticamente

Existe outra maneira mais refinada de definir a largura da coluna USER. Se executarmos o comando com um valor muito alto para a largura da coluna USER, poderemos usar um pequeno script para reorganizar as linhas, ajustando a largura da coluna ao nome de usuário mais longo.

Para fazer isso

  • Copie o script abaixo, cole-o em um arquivo vazio e salve-o como psaux_alternative.py.
  • Torne executável
  • Adicione uma linha ao seu ~/.bashrc:

    alias psaux='/path/to/psaux_alternative.py`
    

Em seguida, a execução psauxem uma janela do terminal exibirá a saída com uma largura automática da coluna USER.

O script:

#!/usr/bin/env python3

import subprocess

command = "ps axo user:30,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm"
l = subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").split("\n")
minlen = sorted(set([30-len(item.split(" ")[0]) for item in l]))[0]
for line in l:
    print(line[:30-minlen]+line[30:])

Esta é uma solução muito boa, muito obrigado Jacob! No entanto, você acha que existe uma maneira adequada de fazer isso? Quero dizer, o que acabamos de fazer foi aumentar a largura da coluna, mas não há como deixar o Ubuntu aumentar automaticamente essa largura de acordo com o maior tamanho de nome de usuário?
Giovanni Mounir 14/09

@GiovanniMounir agora que é uma pergunta interessante! E sim, isso deve ser possível. Voltarei a ele amanhã ou depois de amanhã, o mais tardar.
Jacob Vlijm 14/09

2
@GiovanniMounir Fiz um pequeno script para fazer o trabalho. A execução exibirá a largura automática da saída da coluna USER.
Jacob Vlijm 15/09/14

Solução maravilhosa, Jacob! Muito obrigado!
Giovanni Mounir

@JacobVlijm Very nice one! Mais uma vez estou impressionado com seus scripts para todos os fins ...; D
Byte Commander

1

Eu encontrei o mesmo problema. O manual ps nos fala sobre WIDE-WCHAN-COLUMN. Uma tentativa inteligente com WIDE-RUSER-COLUMN formado em paralelo terminou no resultado desejado:

$ ps -e -o ruser=WIDE-RUSER-COLUMN

Você poderia adicionar algum contexto em sua resposta que explique o comando? boas-vindas e agradecimentos
αғsнιη

@KasiyA Foi editado.
Byte Commander

@ByteCommander eu vejo. BTW, eu não sou a pessoa que recusou :( +1 para ele.
αғsнιη
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.