Qu'est-ce qui pousserait ps à signaler l'uid au lieu du nom d'utilisateur?

28

J'ai installé Eucalyptus sur ma machine Linux, et j'ai remarqué que pour les processus appartenant à l'utilisateur eucalyptus, ps signale l'ID utilisateur au lieu du nom d'utilisateur. Par exemple:

$ 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

Qu'est-ce qui provoquerait cela?

Notez qu'il y a une entrée appropriée dans / etc / passwd:

$ grep eucalyptus /etc/passwd
eucalyptus:x:107:115::/var/lib/eucalyptus:/bin/bash

Notez également que ls property signale la propriété des fichiers par le compte eucalyptus:

$ touch foo
$ ls -l foo
-rw-r--r-- 1 eucalyptus eucalyptus 0 2010-09-23 11:47 foo
Lorin Hochstein
la source

Réponses:

41

ps utilise l'uid lorsque le nom d'utilisateur comporte plus de 8 caractères.

Seth L
la source
Bon appel. À partir de la page de manuel: "Ce sera l'ID utilisateur textuel, s'il peut être obtenu et si la largeur du champ le permet, ou une représentation décimale dans le cas contraire."
Michael Mrozek
Ou peut-être qu'il n'y a aucun moyen de traduire l'UID en nom.
vonbrand
12

Vous pouvez contrôler la largeur des colonnes:

ps o user:12,pid,%cpu,%mem,vsz,rss,tty,stat,start,time,comm

cela reproduit le uformat de ps u, mais rend le champ utilisateur large de 12 caractères.

En pause jusqu'à nouvel ordre.
la source
0

Bien sûr, vous avez un problème avec votre / etc / passwd ... vous l'avez modifié manuellement, n'est-ce pas? :)

de toute façon, j'ai reproduit le problème en copiant la ligne de l'utilisateur dans / etc / passwd et en changeant le nom d'utilisateur par l'ID utilisateur.

Comme ça:

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

Notez que "l'utilisateur numéroté" est le premier.

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

Essayez d'exécuter "whoami", bien sûr, il renvoie 107 :)

C'est un comportement étrange, ps renvoie le nombre et ls le nom normal: -m ...

Pour le résoudre:

  • éditez simplement / etc / passwd et supprimez l'entrée incorrecte
  • ou utilisez 'userdel 107', mais tous les programmes d'eucalyptus doivent être arrêtés
Keymon
la source