为什么“ ps”输出无法解析进程的uid?


8

上下文:在ubuntu Linux 2.6.24-22-xen#1 SMP x86_64 GNU / Linux上

我正在通过init.d脚本启动守护程序,但是在“ ps”输出中,它以数字形式显示守护程序的用户。例如

1000  17560  1  1 11:04 ?  00:00:09 /usr/lib/jvm/java-6-sun/bin/java -server 
        -jar /home/superduperadmin/server/daemon.jar

1000映射到/ etc / passwd中的superduperadmin。

为什么是这样 ?是因为superduperadmin太长了吗?


好的,除此之外,您遇到的问题是什么?

这还不完全是问题。我只是想知道为什么某些进程的用户标识被解析为文本对应的标识符,而我的守护进程却没有。

Answers:


17

是的,因为太长了...

ps(1)手册页 ...

euser EUSER有效的用户名。这将是文本用户ID,
              如果可以获取并且字段宽度允许,或者 
              否则用小数表示。n选项可以是
              用于强制十进制表示。 

IIRC ps的限制为8个字符,无论您的终端有多宽,它都不能更改。\ o /
David Pashley,2009年

我自己一直在想,这是否与LDAP用户有关,但是没有。谢谢。
TRS-80

3

用户名太长而无法显示-超过8个字符。

如果要ps使用更长的名称列表,则必须自己设置允许的最大长度:

$ ps -e -o "pid,user:16,command"

0
  1. 将用户“ superduperadmin”重命名为“ sda”。

    重命名主目录以匹配是可选的,但是您确实需要编辑引用该用户名的所有脚本,配置文件等(如果您重命名主目录,则为目录)。

  2. 给自己一个沉重的打击,以创建一个需要输入太多内容以提醒自己不要再次做的用户帐户:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.