Co powoduje, że ps zgłasza UID zamiast nazwy użytkownika?

28

Mam eukaliptusa zainstalowanego na moim komputerze z systemem Linux i zauważyłem, że w przypadku procesów należących do użytkownika eukaliptusa ps zgłasza identyfikator użytkownika zamiast nazwy użytkownika. Na przykład:

$ 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

Co by to spowodowało?

Zauważ, że w / etc / passwd znajduje się poprawny wpis:

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

Pamiętaj też, że ls property zgłasza własność plików według konta eukaliptusowego:

$ touch foo
$ ls -l foo
-rw-r--r-- 1 eucalyptus eucalyptus 0 2010-09-23 11:47 foo
Lorin Hochstein
źródło

Odpowiedzi:

41

ps używa identyfikatora użytkownika, gdy nazwa użytkownika jest dłuższa niż 8 znaków.

Seth L.
źródło
Dobra decyzja. Ze strony podręcznika: „Będzie to tekstowy identyfikator użytkownika, jeśli można go uzyskać, a szerokość pola na to pozwala, lub inaczej reprezentacja dziesiętna”.
Michael Mrozek
A może nie ma sposobu na przetłumaczenie UID na nazwę.
vonbrand
12

Możesz kontrolować szerokość kolumn:

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

odtwarza uformat ps u, ale powoduje, że pole użytkownika ma szerokość 12 znaków.

Wstrzymano do odwołania.
źródło
0

Pewnie, że masz problem ze swoim / etc / passwd ... edytowałeś go ręcznie, prawda? :)

zresztą odtworzyłem problem z kopiowaniem wiersza użytkownika w / etc / passwd i zmianą nazwy użytkownika według identyfikatora użytkownika.

Lubię to:

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

Zauważ, że „numerowany użytkownik” jest pierwszy.

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

Spróbuj wykonać „whoami”, na pewno zwróci 107 :)

To dziwne zachowanie, ps zwraca liczbę, a ls normalna nazwa: -m ...

Aby to rozwiązać:

  • po prostu edytuj / etc / passwd i usuń niepoprawny wpis
  • lub użyj „userdel 107”, ale wszystkie programy z eukaliptusa muszą zostać zatrzymane
Keymon
źródło