這很奇怪:
» ps -ef | grep gitlab
gitlab-+ 19663 4237 0 06:45 ? 00:00:00 postgres: gitlab gitlabhq_production [local] idle
但gitlab-+
用戶不存在:
» cat /etc/passwd | grep gitlab
gitlab-www:x:998:997::/var/opt/gitlab/nginx:/bin/false
git:x:997:996::/var/opt/gitlab:/bin/sh
gitlab-redis:x:996:995::/var/opt/gitlab/redis:/bin/false
gitlab-psql:x:995:994::/var/opt/gitlab/postgresql:/bin/sh
gitlab-prometheus:x:994:993::/var/opt/gitlab/prometheus:/bin/sh
為什麼會這樣呢?
我怎麼能告訴ps
我顯示所有條目的使用者 ID 而不是使用者名稱?
答案1
使用n
參數,手冊頁中描述:
n Numeric output for WCHAN and USER (including all types of UID and GID)
例如
ps -ef n
注意,前面應該有空格,而不是破折號n
答案2
UID 欄位末端的 + 號僅表示「使用者名稱長度超過 8 個字符,不適合此處」。
由於歷史原因,輸出的字段寬度ps -ef
一直保持原樣,即使長度超過8 個字元的用戶名已經變得很常見:主要是因為有很多腳本解析其輸出,如果字段寬度超出範圍,就會以神秘的方式失敗。