psがユーザー名の代わりにuidを報告する原因は何ですか?

psがユーザー名の代わりにuidを報告する原因は何ですか?

私は持っていますユーカリ私はLinuxコンピュータにインストールしましたが、ユーカリユーザーが所有するプロセスの場合メモユーザー名の代わりにユーザー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

また参考にしてくださいエルエスプロパティはユーカリアカウントのファイル所有権を報告します。

$ touch foo
$ ls -l foo
-rw-r--r-- 1 eucalyptus eucalyptus 0 2010-09-23 11:47 foo

答え1

psuidは、ユーザー名が8文字を超える場合に使用されます。

答え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」を使用してください。ただし、ユーカリのすべてのプログラムは停止する必要があります。

関連情報