Linuxマシンに Eucalyptus がインストールされていますが、eucalyptusユーザーが所有するプロセスの場合、psがレポートすることに気付きましたユーザー名の代わりにユーザー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
また、lsプロパティは、eucalyptusアカウントによるファイルの所有権を報告することに注意してください。
$ touch foo
$ ls -l foo
-rw-r--r-- 1 eucalyptus eucalyptus 0 2010-09-23 11:47 foo
ps
は、ユーザー名が8文字より長い場合にuidを使用します。
列の幅を制御できます。
ps o user:12,pid,%cpu,%mem,vsz,rss,tty,stat,start,time,comm
これにより、ps u
のu
形式が再現されますが、ユーザーフィールドは12文字幅になります。
確かに/ 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 ...
それを解決するには: