(Tarafından tarif edildiği gibi bir jeneratör komut dosyası man systemd.generator
olarak) /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 start
başlar (= birim dosyası tamam).
Bu soruna bir çözüm bulmak için, bu oluşturulan birim dosyasını kopyalayıp makineye /etc/systemd/system
manuel olarak eklenmiş /etc/systemd/system/multi-user.target.wants
ve 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.