ps 命令显示用户 ID 而不是用户名

ps 命令显示用户 ID 而不是用户名

在 Centos 6.6 中,当我运行ps命令时,第一列是用户 ID,而不是用户名。

root@cluster:mahmood# ps aux | grep Xvnc
506      11881  0.6  0.1 168580 63164 ?        S    Jun03  24:56 /usr/bin/Xvnc :6 -desktop cluster.hpc.org:6 (haghsheno) -auth /home/mahmood/.Xauthority -geometry 1000x900 -rfbwait 30000 -rfbauth /home/mahmood/.vnc/passwd -rfbport 5906 -fp catalogue:/etc/X11/fontpath.d -pn

为什么会发生这样的事情呢?我怎样才能将其更改为用户名?

答案1

不幸的是,如果用户名长度超过 8 个字符,默认 ps 不会显示用户名。如果您的系统正在运行带 LDAP 的 sssd,您可以使用“getent passwd 用户id”来查找用户是否在 LDAP 数据库或密码文件中。我的用户名“tvb”几乎总是会出现。但是用户名“姓氏“ 在大多数情况下不会。其他命令如“w“将显示前 8 个字符”弗隆格拉斯“并截断剩余部分。在上面@KevinO 的示例中,”哈尔达蒙" 是 9 个字符,这就是为什么它不作为用户名出现在 ps 中,而是作为用户 ID 出现。

% getent passwd haldaemon
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin

另外,答案在博客.dbi-services.com即使在 BSD 格式 ps 输出中,也有助于指定用户名字段的字段长度。稍微简化一下他们的建议:

env PS_FORMAT='user:12,pid,%cpu,%mem,vsz,rss,tty,stat,start,time,command' ps ax | grep haldaemon
haldaemon     2032  0.0  0.0  53100  2020 ?        Ssl    Aug 12 00:01:10 hald

它提供了所需的输出。

答案2

如果 id 不在 passwd ( grep 506 /etc/passwd) 内,则不会显示用户名。

在这种情况下,在 内添加相应的条目/etc/passwd

编辑 正如所提到的杰夫·夏勒凯文·奥

这个答案并不完全!最好从 /etc/passwd 中找到这些行,其第三个字段($3,以冒号分隔-F:)恰好包含506查看杰夫的第一条评论。上面的简单示例将显示包含用户名 yx506、id 123506 等的行。

但无论如何:如果里面缺少 userid/etc/passwd,这个答案可以成为一个解决方案。

将来我会尝试更具体......

相关内容