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

Réponses:


41

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


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.