什么会导致 ps 报告 uid 而不是 username?

Lor*_*ein 30 process ps

我在 Linux 机器上安装了Eucalyptus,我注意到对于 eucalyptus 用户拥有的进程,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
Run Code Online (Sandbox Code Playgroud)

什么会导致这种情况发生?

请注意,/etc/passwd 中有一个正确的条目:

$ grep eucalyptus /etc/passwd
eucalyptus:x:107:115::/var/lib/eucalyptus:/bin/bash
Run Code Online (Sandbox Code Playgroud)

另请注意ls属性报告桉树帐户的文件所有权:

$ touch foo
$ ls -l foo
-rw-r--r-- 1 eucalyptus eucalyptus 0 2010-09-23 11:47 foo
Run Code Online (Sandbox Code Playgroud)

Set*_*h L 42

ps 当用户名超过 8 个字符时使用 uid。


Den*_*son 13

您可以控制列的宽度:

ps o user:12,pid,%cpu,%mem,vsz,rss,tty,stat,start,time,comm
Run Code Online (Sandbox Code Playgroud)

这再现了 的u格式ps u,但它使用户字段有 12 个字符宽。