Üretilen sistem birimi önyüklemede başlamıyor


5

(Tarafından tarif edildiği gibi bir jeneratör komut dosyası man systemd.generatorolarak) /etc/systemd/system-generators/dizin.

Jeneratör önyüklemede çalışır ve başarıyla bir birim dosyası dir /run/systemd/generator.late/( dir ARGV[3]argümanı kullanarak ) oluşturur. Jeneratör ayrıca /run/systemd/generator.late/multi-user.target.wants/, açılışta servisi başlatmak istediğim için (özellikle ağ kurulduğunda) sembolik bağlantı ekler .

Birim dosyası ve sembolik bağlantı başarıyla oluşturulur. Sorun, hizmetin otomatik olarak başlatılmamasıdır.

Ben komut kesilirken service myService status, bu inaktif diyor ve günlük bana bile vermedi inanıyoruz yapar boş denemek hizmetini başlatın. Bunu yaparsam service myService startbaşlar (= birim dosyası tamam).

Bu soruna bir çözüm bulmak için, bu oluşturulan birim dosyasını kopyalayıp makineye /etc/systemd/systemmanuel olarak eklenmiş /etc/systemd/system/multi-user.target.wantsve yeniden başlattım. DID servisi önyüklemede başlar.

Tüm bunlar beni /run/systemd/generator.late/multi-user.target.wants/birime bağlayan bağlantının üretilen hizmeti başlatmak için yeterli olmadığını düşündürüyor . Sistem tarafından oluşturulan diğer birim dosyalarını inceledim /run/systemd/generator.late/ve aynı şeyi yapıyorlar ve sembolik bağlantıyı benim yaptığım gibi kullanıyorlar. Peki, burada neler oluyor?

Bu sorunu gidermenin bir yolu var mı? Yanlış oluşturduğum sembolik bağlantı mı? Sembolik bağlantıdan başka bir şey yapmam gerekir mi?

Son jeneratör betiği şöyle görünür:

#! / Bin / bash

serviceName = MyService
Bin = / / yol / zaman / çalıştırılabilir
generatorDir = $ 3
unitFile = $ generatorDir / $ serviceName.service

cat> "$ unitFile" << EOF
[Birim]
Açıklama = $ serviceName service
= Network.target sonra

[Hizmet]
Tür = basit
ExecStart = $ bin

[Yükleme]
WantedBy = multi-user.target
EOF

mkdir "$ generatorDir / multi-user.target.wants" 2> / dev / null
-n "$ unitFile" "$ generatorDir / multi-user.target.wants / $ serviceName.service"

Not: Gerçek senaryo biraz daha karmaşık, bu sadece minimalist bir örnek.

Ubuntu 16.10 kullanıyorum. Gerekirse ek bilgi vereceğim.


Bunu çözebildin mi? Belki de cevaba yorum yapın ve başarılı olursa cevabı bu şekilde kabul edin.
U. Windl

Yanıtlar:


2

Bu sorunu gidermenin yolu, sisteminizi başlatmaktır ve hizmetiniz beklendiği gibi başlatılmadığında, komutu çalıştırabilirsiniz:

systemd-analyze dökümü

Bu, bağımlılıklar dahil, her birim hakkında çok ayrıntılı bir bilgi listesi çıkarır. Bundan, genellikle ünitenizin neden aktif duruma geçmediğini anlayabilirsiniz.

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.