在 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
它提供了所需的输出。