Я пытаюсь запустить пользовательский сервис с systemd. Я не админ по профессии, а скорее разработчик.
В настоящее время я тестирую свое решение на Ubuntu 16.04, но планирую развернуть решение на Centos 7. Я надеюсь, что ничего не изменится на самом деле.
Однако до сих пор мне удается сделать следующее по сценарию:
- проверьте, что мой сервис эффективно работает при запуске из командной строки
- создайте пользователя john с каталогом
/home/john
(мне нужен этот home), но без пароля. Я читал, что это будет более безопасно (и надеюсь, что я не ошибаюсь ...). - создайте каталог
/home/john/.config/systemd/user
для хранения моих служебных файлов. - Включить задержку в соответствии с этим документом
Итак, теперь я хотел бы проверить открытие сессии с Джоном и запустить службы, но это не работает. Я пытаюсь сделать это следующим образом:
sam$ sudo su - john
john$ systemctl --user status my-service.service
и собирать это неприятно
Failed to connect to bus: No such file or directory
и независимо от того, какую команду status/start/stop/list-units
я ставлю вместо статуса выше, это всегда одно и то же сообщение.
Команда, которая подключает меня к сеансу john, записывается в эту строку:
$journalctl -e
Jun 15 18:16:23 sam-dell sudo[5681]: sam : TTY=pts/2 ; PWD=/home/sam/IdeaProjects ; USER=root ; COMMAND=/bin/su - john
Jun 15 18:15:02 sam-dell su[5491]: Successful su for john by root
Jun 15 18:15:02 sam-dell su[5491]: + /dev/pts/2 root:john
Jun 15 18:15:02 sam-dell su[5491]: pam_unix(su:session): session opened for user john by (uid=0)
Jun 15 18:15:02 sam-dell su[5491]: pam_systemd(su:session): Cannot create session: Already running in a session
... и ничего не происходит, когда я пытаюсь команды systemctl
.
Примечание: я добавил пароль своему пользователю, и он все еще не работает с терминала, открытого в моем сеансе gnome моего пользователя sam
.
Но поскольку у моего пользователя теперь есть пароль, Ubuntu позволяет мне подключиться к нему с помощью gnome, и я могу без проблем запустить systemctl --user status/start/stop
, войдя в сеанс john gnome.
У кого-нибудь есть идея? Возможно, я неправильно понимаю проблему, я просто хочу запустить службу systemd от имени другого пользователя на моем удаленном сервере, поэтому я полагаю, что я поступил правильно, но, возможно, нет.
Большое спасибо за помощь