Пользователь, указанный в ps, не существует

Пользователь, указанный в ps, не существует

Это странно:

» 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чтобы для всех записей отображался идентификатор пользователя вместо имени?

решение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 символов: в основном потому, что существует множество скриптов, которые анализируют вывод и по непонятным причинам выдают сбои, если ширина полей изменяется.

Связанный контент