부팅 시 시스템 사용자 유닛이 시작되지 않는 이유는 무엇입니까?

부팅 시 시스템 사용자 유닛이 시작되지 않는 이유는 무엇입니까?

시스템 사용자 유닛을 생성하고 시스템 부팅 시 시작되도록 하려고 합니다. 서비스는 수동으로 시작되지만 부팅 시 시작되지 않습니다.

인터넷 검색을 통해 부팅 시 사용자 유닛이 시작되게 하려면 를 실행해야 한다는 것을 알게 되었는데 loginctl enable-linger <username>, 전혀 효과가 없는 것 같습니다. 실제로 매뉴얼 페이지에는 다음과 같이 나와 있습니다.

       Enable/disable user lingering for one or more users. If enabled for
       a specific user, a user manager is spawned for the user at boot and
       kept around after logouts. This allows users who are not logged in
       to run long-running services.

이 명령을 실행해도 부팅 시 서비스가 시작되지 않습니다.

loginctl enable-linger error

해당 단위:

$ cat ~/.config/systemd/user/thin\@.service
[Unit]
Description=A fast and very simple Ruby web server

[Service]
Type=simple
EnvironmentFile=/home/error/.config/thin/%i
ExecStart=/usr/bin/bash /home/error/.rvm/wrappers/%i/thin start -a $THIN_BIND -p $THIN_PORT
WorkingDirectory=/srv/www/%i
PrivateTmp=true

[Install]
WantedBy=multi-user.target

재부팅하면 실행되지 않습니다.

$ systemctl --user status thin@redmine -l[email protected] - A fast and very simple Ruby web server
   Loaded: loaded (/home/error/.config/systemd/user/[email protected]; enabled; vendor preset: enabled)
   Active: inactive (dead)

# systemctl status user@1000 -l[email protected] - User Manager for UID 1000
   Loaded: loaded (/usr/lib/systemd/system/[email protected]; static; vendor preset: disabled)
   Active: active (running) since Wed 2015-12-23 19:43:27 GMT; 13s ago
 Main PID: 613 (systemd)
   Status: "Startup finished in 38ms."
   CGroup: /user.slice/user-1000.slice/[email protected]
           ├─613 /usr/lib/systemd/systemd --user
           └─615 (sd-pam)                                                          

Dec 23 19:43:27 redmine systemd[613]: Reached target Sockets.
Dec 23 19:43:27 redmine systemd[613]: Starting Sockets.
Dec 23 19:43:27 redmine systemd[613]: Reached target Timers.
Dec 23 19:43:27 redmine systemd[613]: Starting Timers.
Dec 23 19:43:27 redmine systemd[613]: Reached target Basic System.
Dec 23 19:43:27 redmine systemd[613]: Starting Basic System.
Dec 23 19:43:27 redmine systemd[613]: Reached target Default.
Dec 23 19:43:27 redmine systemd[613]: Startup finished in 38ms.
Dec 23 19:43:27 redmine systemd[613]: Starting Default.
Dec 23 19:43:27 redmine systemd[1]: Started User Manager for UID 1000.

수동으로 시작할 수 있으며 작동합니다.

$ systemctl --user start thin@redmine
$ systemctl --user status thin@redmine -l[email protected] - A fast and very simple Ruby web server
   Loaded: loaded (/home/error/.config/systemd/user/[email protected]; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2015-12-23 19:43:50 GMT; 5s ago
 Main PID: 1265 (ruby)
   CGroup: /user.slice/user-1000.slice/[email protected]/thin.slice/[email protected]
           └─1265 ruby /home/error/.rvm/gems/ruby-2.2.1@redmine/bin/thin start -a ::1 -p 8008

Dec 23 19:43:50 redmine systemd[613]: Started A fast and very simple Ruby web server.
Dec 23 19:43:50 redmine systemd[613]: Starting A fast and very simple Ruby web server...
Dec 23 19:43:52 redmine bash[1265]: /home/error/.rvm/gems/ruby-2.2.1@redmine/gems/htmlentities-4.3.1/lib/htmlentities/mappings/expanded.rb:465: warning: duplicated key at line 466 ignored: "inodot"

# systemctl status user@1000 -l[email protected] - User Manager for UID 1000
   Loaded: loaded (/usr/lib/systemd/system/[email protected]; static; vendor preset: disabled)
   Active: active (running) since Wed 2015-12-23 19:43:27 GMT; 40s ago
 Main PID: 613 (systemd)
   Status: "Startup finished in 38ms."
   CGroup: /user.slice/user-1000.slice/[email protected]
           ├─613 /usr/lib/systemd/systemd --user
           ├─615 (sd-pam)                                                       
           └─thin.slice
             └─[email protected]
               └─1265 ruby /home/error/.rvm/gems/ruby-2.2.1@redmine/bin/thin start -a ::1 -p 8008                                                               

Dec 23 19:43:27 redmine systemd[613]: Startup finished in 38ms.
Dec 23 19:43:27 redmine systemd[613]: Starting Default.
Dec 23 19:43:27 redmine systemd[1]: Started User Manager for UID 1000.
Dec 23 19:43:50 redmine systemd[613]: Created slice -.slice.
Dec 23 19:43:50 redmine systemd[613]: Starting -.slice.
Dec 23 19:43:50 redmine systemd[613]: Created slice thin.slice.
Dec 23 19:43:50 redmine systemd[613]: Starting thin.slice.
Dec 23 19:43:50 redmine systemd[613]: Started A fast and very simple Ruby web server.
Dec 23 19:43:50 redmine systemd[613]: Starting A fast and very simple Ruby web server...
Dec 23 19:43:52 redmine bash[1265]: /home/error/.rvm/gems/ruby-2.2.1@redmine/gems/htmlentities-4.3.1/lib/htmlentities/mappings/expanded.rb:465: warning: duplicated key at line 466 ignored: "inodot"

부팅 시 서비스가 시작되지 않는 이유를 확인하고 서비스를 시작하려면 어떻게 해야 합니까?

운영 체제는 Fedora 23 x86_64, 시스템 222-10입니다.

답변1

나는 이것을 스스로 알아낼 것이라고 생각합니다.

단서는 바로 여기 사용자 서비스 출력에 있습니다.

Dec 23 19:43:27 redmine systemd[613]: Reached target Default.

내 장치에 로딩이 필요 multi-user.target하지만 사용자 시스템에는 그러한 대상이 없습니다.

default.target장치 파일에서 이를 변경하고 서비스를 비활성화했다가 다시 활성화하면 이제 부팅 시 시작됩니다.

[Install]
WantedBy=default.target

그런 다음

$ systemctl --user disable thin@redmine
Removed symlink /home/error/.config/systemd/user/multi-user.target.wants/[email protected].
$ systemctl --user daemon-reload
$ systemctl --user enable thin@redmine
Created symlink from /home/error/.config/systemd/user/default.target.wants/[email protected] to /home/error/.config/systemd/user/[email protected].

관련 정보