ps
usa o uid quando o nome de usuário tem mais de 8 caracteres.
Eu tenho Eucalyptus instalado em minha máquina Linux, e notei que para processos pertencentes ao usuário de eucalipto, ps informa o userid em vez do nome de usuário. Por exemplo:
$ sudo -i -u eucalyptus
$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
107 29764 0.0 0.0 19376 2104 pts/2 S 11:43 0:00 -bash
107 30198 0.0 0.0 15256 1180 pts/2 R+ 11:44 0:00 ps u
O que causaria isso acontecer?
Note que há uma entrada adequada em / etc / passwd:
$ grep eucalyptus /etc/passwd
eucalyptus:x:107:115::/var/lib/eucalyptus:/bin/bash
Observe também que a propriedade ls informa a propriedade dos arquivos pela conta do eucalyptus:
$ touch foo
$ ls -l foo
-rw-r--r-- 1 eucalyptus eucalyptus 0 2010-09-23 11:47 foo
Você pode controlar a largura das colunas:
ps o user:12,pid,%cpu,%mem,vsz,rss,tty,stat,start,time,comm
isso reproduz o formato u
de ps u
, mas deixa o campo do usuário com 12 caracteres de largura.
Claro que você tem um problema com o seu / etc / passwd ... você o editou manualmente, não é? :)
de qualquer forma, eu reproduzi o problema copiando a linha do usuário em / etc / passwd e alterando o nome do usuário pelo ID do usuário.
Assim:
root@juice:/etc/# grep 129 /etc/passwd
129:x:129:137:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false
puppet:x:129:137:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false
Observe que o "usuário numerado" é o primeiro.
root@juice:/etc/# sudo -u puppet -s
129@juice:/etc/$ whoami
129
129@juice:/etc/$ touch /tmp/a
129@juice:/etc/$ ls -l /tmp/a
-rw-r--r-- 1 129 puppet 0 2010-09-23 19:12 /tmp/a
129@juice:/etc/$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
129 12443 2.2 0.1 7112 4380 pts/1 S 19:12 0:00 /bin/bash
129 12490 0.0 0.0 2716 1068 pts/1 R+ 19:12 0:00 ps u
Tente executar "whoami", com certeza ele retorna 107:)
É um comportamento estranho, ps retorna o número e ls o nome normal: -m ...
Para resolver: