25

ps -eaf

..

kude     22593 12078  0 09:06 ?        00:00:02 smbd -D
hasi     22929 12078  0 09:12 ?        00:00:00 someprog.pl
root     22950    43  0 Sep08 ?        00:00:19 [nfsiod]
root     24558    43  0 Sep09 ?        00:00:28 [pdflush]
root     25320     1  0 00:00 ?        00:00:01 /usr/bin/atop -a -w /var/log/atop/atop_20110916 600
1466     25757 12078  0 10:12 ?        00:00:00 smbd -D
root     26752 12078  0 10:32 ?        00:00:01 smbd -D

..

id username2

uid = 1466(username2)gid = 513(DomainUsers)groups = 513(DomainUsers)

LDAP内のすべてのユーザー(/etc/nsswitch.confは正しい、すべて正しい-ただし、このユーザーのみが表示されない)

ユーザー名の代わりにuid番号(1466)を表示するのはなぜですか?

4

4 に答える 4

38

ps -ef(POSIX) またはps aux(BSD-derivatives) にリストされるユーザー名には 8 文字の制限があります。オプションの説明

Mac と Linux の両方のボックスで man ページを検索しましたが、そこに記録されている制限は見当たりませんでした。

この質問は、回答として 8 文字の制限があるフォーラムに定期的に表示されます。

Debian に対して「バグ」が報告されたが、バグではないとして閉じられたこのページにようやく出くわしまし。彼らはこのページを参照しており、名前が長すぎる場合に POSIX および UNIX 標準がどのように uid にフォールバックする必要があるかについても主張しています。また、実際の POSIX 標準からではありません。

これが信頼できるものかどうかはわかりませんが、9 文字のユーザー名で見られる動作を説明しています。:)

たぶん、他の誰かがより信頼できるリンクへの回答を投稿できますか?

于 2011-09-16T06:38:21.807 に答える
11

Ray Toal が言及しているように、8 文字の制限に制限されています。これはバグではなく、Ray が言及した標準の一部です。ps(パッケージの一部)のソースコードを確認するprocpsと、コメントの1つに

The Open Group Base Specifications Issue 6 (IEEE Std 1003.1, 2004 Edition)  
requires that user and group names print as decimal numbers if there is
not enough room in the column, so tough luck if you don't like it.

The UNIX and POSIX way to change column width is to rename it:
  ps -o pid,user=CumbersomeUserNames -o comm
The easy way is to directly specify the desired width:
  ps -o pid,user:19,comm

セクションSTDOUTのリンクを確認すると、フィールド ( userrusergrouprgroup ) が取得でき、フィールド幅が許す場合は出力され、それ以外の場合は 10 進表現が表示されます。 ユーザー名とグループ名のフィールド幅が 8 に制限されている理由は、レガシー サポートのためである可能性がありますが、それは推測にすぎません。

于 2011-09-16T12:08:21.447 に答える