Systemd bağımlılıkları ve önyükleme sırası


20

İşlemlerin başlaması için bir önyükleme sırası belirtmem gerekiyor. Fedora 18 üzerinde çalışan 389 Dizin Sunucusu ve Samba var. Ağ hizmetleri önyüklemesini, sonra 389 DS'yi ve ardından Samba'yı nasıl alabilirim? Fedora'da bunu yönetmek için bir GUI var mı?

Samba'nın başlamasını sağladım systemctl enable smb.service. Ayrıca 389 DS'yi etkinleştirdim systemctl enable dirsrv.target.


Systemd , servisler arasında düzen gerektirmez, fikir her şeyi paralel olarak başlatmak ve bağlantıları sunuculara sunuldukça teslim etmektir. Varsayılan kurulum tarafından verilen yapılandırma iyi olmalıdır. Neden bir sipariş tanımlamanız gerektiğini düşünüyorsunuz? Bir şey işe yaramıyor mu?
vonbrand

Ayrıca, bu geri geldiğinden, gerçekten etki alanı denetleyicinizde dosya / yazdırma hizmetleri çalıştırmamanız gerektiğini de not etmeliyim.
Michael Hampton

@vonbrand DHCP sunucumun (yapılandırması bir LDAP dizininde depolandığı için) olması için slapd'ye ihtiyaç duyduğum bu sorunu yaşadım. Değilse, DHCP sunucusu gelmezdi.
mat

Yanıtlar:


25

systemctl edit smb.serviceBağımlılıkları güncellemek için kullanın .

After=dirsrv.target - smb.service dirsrv.target sonra başlatılmasını sağlayacaktır.

Sağlamlık için (bu şeylerle uğraşırken buna değer olacaktır) ayrıca aşağıdakilerden bazılarını dahil etmek isteyebilirsiniz:

Requires=dirsrv.target- smb.service etkinleştirildiğinde dirsrv.target öğesini etkinleştirin. Dirsrv.target başarısız olursa smb.service başarısız olur.

Wants=dirsrv.target- smb.service etkinleştirildiğinde dirsrv.target öğesini etkinleştirin. Dirsrv.target başarısız olursa smb.service dosyasının başarısız olmasına neden olmaz.

BindsTo=dirsrv.target - dirsrv.target devre dışı bırakılmışsa, smb.service hizmetini devre dışı bırakın.

Kaynak: http://www.freedesktop.org/software/systemd/man/systemd.unit.html

systemd-uisystemd için bir GUI sağlar. Systemd durumu hakkında iyi bir görünüm verir, ancak yine de birim dosyalarını değiştirmek için bir metin editörü kullanmanız gerekir.


Bir durumda A B Gerektirir "başarısız" olan bu yüzden bir başlatılmış olmayacak, "B" ne diyecek? B programı sıfırdan farklı bir değer döndürüyor mu?
John Wang

2
Kötü uygulama önerdiği için indirildi. /usr/lib/systemdBir dağıtım sağlayıcısı olmadıkça veya her paket güncellemesinde dosyalarınızın üzerine yazılmadan keyif almadan birim dosyalarının sürümlerini düzenlemeyin . Birim dosyasını kopyalayıp /etc/systemddüzenleyin veya bir bırakma dosyası kullanın (ayrıntılar için bkz. Systemd.unit (5)). Daha da kolay, sadece systemctl edit smb.serviceaçılan dosya sihrini otomatik olarak kullanın!
Jeremy Visser

3
Cevabı düzenlediğiniz için teşekkürler! Endişeleri çözer ve ben bir yukarı oylamaya dönüştüm. :-)
Jeremy Visser

10

İki şey yapın:

  1. /lib/systemd/system/smb.serviceBağımlılığı belirtmek için birim dosyasını düzenleyin. Bu [unit]bölüm, After=bundan önce hangi hizmetlere / hedeflere ulaşılması gerektiğini belirten bir satır içerir .

    After=syslog.target network.target nmb.service winbind.service
    

    Bunu şu şekilde değiştirin:

    After=dirsrv.target syslog.target network.target nmb.service winbind.service
    
  2. Bu bağımlılığı Fedora'ya bir hata olarak bildirin , böylece gelecekteki sürümlere dahil edilebilir.


Bu işe yaramıyor gibi görünüyor. Samba hala
389'dan

3
unitdosyaları değiştirdikten sonra , genellikle çalıştırmalısınızsystemctl daemon-reload
scottyseus

2

dosyanın bölümündeki Requiresyönergeyi içeren bir satırı değiştirmeniz veya eklemeniz gerekebilir .[Unit]/usr/lib/systemd/system/smb.service

Requires=dirsrv.target

ve

After=dirsrv.target

Peki, bu cevaba oy verdim, ancak kişisel olarak gerektirir = yerine Wants = dirsrv.target ile giderdim. (Bkz. systemd.unit (5) için Wants =)
galaksi

2

İçinde hizmet dosyasını değiştirmenin iki alternatifi vardır /usr/lib/systemd/system(bkz. Örnek 2. Satıcı ayarlarını geçersiz kılma ):

  1. Dosyayı kopyalayın ve /etc/systemd/systemüzerinde değişiklikler yapın. Bu dosya içindeki dosyayı tamamen geçersiz kılar /usr/lib.

  2. Dosyayı oluşturun /etc/systemd/system/smb.service.d/local.conf. Dosyanın içeriği aşağıdaki örnek gibi olmalıdır. Bu, satıcı tarafından sağlanan hizmet dosyasındaki "Gereken" ve "Sonra" seçeneklerini seçerek geçersiz kılar.

Bunların her biri (dosyanın değiştirilmesi dahil /usr/lib) avantajlar ve dezavantajlar sunar. En iyi seçim, hizmete ve değişikliklerin niteliğine bağlı olabilir.

Çalışabilse de, yalnızca "Sonra" seçeneğini eklemek yeterli değildir (bkz. [Birim] Bölüm Seçenekleri ). "Sonra" düzeni kontrol eder, ancak bağımlılıkları kontrol etmez. Başka dirsrv.targetbir şekilde başlatılmazsa, sipariş belirtmek siparişi başlatmaz. "Gerektiriyor" veya "İstiyor" seçeneğinin kullanılması, dirsrv.targetbaşlatılmaya zorlanacaktır.

[Unit]
Requires=dirsrv.target
After=dirsrv.target

Not: Bu soru ilk sorulduğunda bu yaklaşımın mevcut olup olmadığını bilmiyorum.

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.