Что может заставить ps сообщать uid вместо имени пользователя?

У меня Eucalyptus установлен на моей машине Linux, и я заметил, что для процессов, принадлежащих пользователю эвкалипта, ps сообщает userid вместо имени пользователя. Например:

$ 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

Что может случиться?

Обратите внимание, что в /etc /passwd есть правильная запись:

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

Также обратите внимание, что свойство ls сообщает о владении файлами учетной записью eucalyptus:

$ touch foo
$ ls -l foo
-rw-r--r-- 1 eucalyptus eucalyptus 0 2010-09-23 11:47 foo
25 голосов | спросил Lorin Hochstein 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 23 Sep 2010 19:50:05 +0400 2010, 19:50:05

3 ответа


37

ps использует uid, когда имя пользователя длиннее 8 символов.

ответил Seth L 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 23 Sep 2010 22:10:56 +0400 2010, 22:10:56
11

Вы можете управлять шириной столбцов:

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

это воспроизводит формат u ps u, но это делает поле пользователя шириной 12 символов.

ответил Dennis Williamson 24 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 24 Sep 2010 03:25:16 +0400 2010, 03:25:16
1

У вас есть проблема с вашим /etc /passwd ... вы отредактировали его вручную, не так ли? :)

В любом случае, я воспроизвел проблему копирования строки пользователя в /etc /passwd и изменение имени пользователя по идентификатору пользователя.

Вот так:

[email protected]:/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

Обратите внимание, что «нумерованный пользователь» является первым.

[email protected]:/etc/# sudo -u puppet -s
[email protected]:/etc/$ whoami
129

[email protected]:/etc/$ touch /tmp/a
[email protected]:/etc/$ ls -l /tmp/a
-rw-r--r-- 1 129 puppet 0 2010-09-23 19:12 /tmp/a

[email protected]:/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

Попробуйте выполнить «whoami», уверен, что он возвращает 107:)

Это странное поведение, ps возвращает число и ls нормальное имя: -m ...

Чтобы решить эту проблему:

  • просто отредактируйте /etc /passwd и удалите неправильную запись
  • или используйте 'userdel 107', но все программы из эвкалипта должны быть остановлены
ответил Keymon 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 23 Sep 2010 21:18:46 +0400 2010, 21:18:46

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132