Neden sistemd kullanıcı birimim önyüklemede başlamıyor?


39

Bir systemd kullanıcı birimi oluşturmaya çalışıyorum ve sistem önyüklendiğinde başlatılmasını sağlıyorum. Hizmet manuel olarak başlatılıyor, ancak açılışta başlamıyor.

İnterneti araştırırken, kullanıcı birimlerinin açılışta başlayabilmeleri için, çalışması gerektiğini düşündüğümü öğrendim loginctl enable-linger <username>ancak bunun hiçbir etkisi olmadı. Nitekim, man sayfa diyor ki:

       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.

Bu komutu çalıştırmama rağmen hizmetim açılışta başlamıyor.

loginctl enable-linger error

Birim:

$ 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

Yeniden başlattığımda, çalışmıyor:

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

# systemctl status user@1000 -l
● user@1000.service - User Manager for UID 1000
   Loaded: loaded (/usr/lib/systemd/system/user@.service; 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/user@1000.service
           ├─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.

El ile başlatabilirim ve işe yarıyor:

$ systemctl --user start thin@redmine
$ systemctl --user status thin@redmine -l
● thin@redmine.service - A fast and very simple Ruby web server
   Loaded: loaded (/home/error/.config/systemd/user/thin@.service; 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/user@1000.service/thin.slice/thin@redmine.service
           └─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
● user@1000.service - User Manager for UID 1000
   Loaded: loaded (/usr/lib/systemd/system/user@.service; 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/user@1000.service
           ├─613 /usr/lib/systemd/systemd --user
           ├─615 (sd-pam)                                                       
           └─thin.slice
             └─thin@redmine.service
               └─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"

Neden bu hizmetin önyükleme sırasında başlayamadığını nasıl öğrenebilirim?

İşletim sistemi Fedora 23 x86_64, systemd 222-10.

Yanıtlar:


60

Bunu kendi başıma çözeceğim rakamlar.

İpucu buradaydı, kullanıcı servis çıktısında:

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

Ünitem yüklenmek multi-user.targetistiyordu ama kullanıcı sisteminde böyle bir hedef yok.

Bunu default.targetbirim dosyasında değiştirdim, hizmeti devre dışı bıraktım ve yeniden etkinleştirdim ve şimdi açılışta başlıyor.

[Install]
WantedBy=default.target

ve sonra

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

2
Harika. Teşekkürler! Ayrıca benim kullanıcı birimi için multi-user.target dayanacağı mı ...
Gué

2
Çok teşekkür ederim! systemctl --user list-units --type=targetKullanıcı sistemi hedeflerini listelemek için kullanın .
phinz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.