我有桉树安装在我的 Linux 机器上,我注意到对于 eucalyptus 用户拥有的进程,附注报告用户 ID 而不是用户名。例如:
$ 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
另请注意LSproperty 报告 eucalyptus 帐户的文件所有权:
$ touch foo
$ ls -l foo
-rw-r--r-- 1 eucalyptus eucalyptus 0 2010-09-23 11:47 foo
答案1
ps
当用户名长度超过 8 个字符时使用 uid。
答案2
您可以控制列的宽度:
ps o user:12,pid,%cpu,%mem,vsz,rss,tty,stat,start,time,comm
这再现了u
的格式ps u
,但它使用户字段的宽度为 12 个字符。
答案3
当然你的 /etc/passwd 有问题...你手动编辑了它,不是吗? :)
无论如何,我重现了在 /etc/passwd 中复制用户行的问题,并且通过用户 ID 更改用户名。
像这样:
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
请注意,“编号用户”是第一个。
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
尝试执行“whoami”,确保它返回 107 :)
这是一种奇怪的行为, ps 返回数字, ls 返回正常名称:-m ...
解决方法:
- 只需编辑 /etc/passwd 并删除不正确的条目
- 或使用“userdel 107”,但必须停止来自 eucalyptus 的所有程序