Aynı anda yalnızca bir init sistemi etkin olabilir. 16.04'te bu sistemd.
Birkaç paket, birden çok init sistemi için dosyalar ile birlikte gönderilir, böylece farklı işletim sistemlerinde birden çok init sistemi ile yönetilebilirler. Ubuntu'da, bazen aynı anda kullanılmasalar bile, birden fazla init sistemi için komut dosyaları yüklenir.
Yeni init sistemleri eski sistemlerle uyumluluğu korumaya çalışır. Özellikle, systemd hem Upstart hem de SysV init komut dosyalarıyla uyumluluğu sürdürmeye çalışır.
Bahsettiğiniz "init.d" komut dosyasında, bu bir Upstart komut dosyası değil, bir "SysV" init komut dosyasıdır. Ayrıca, "SysV" init komut dosyaları yalnızca "/etc/rc5.d" gibi bir dizine bağlandıklarında önyüklemede başlatılabilir. Ağ Yöneticisinin orada yüklü bir sembolik bağlantısı olmadığını göreceksiniz .
systemd
Eski "SysV" başlangıç komut dosyalarını nasıl yönettiğini anlamak için bkz. Systemd /etc/init.d scirpts'i nasıl kullanır? .
Şimdi, "hizmet ağ yöneticisi yeniden başlatma" ile Ağ Yöneticisi'ni yeniden başlatmanın neden çalıştığı sorusunu yanıtlamak için. service
Komut eski tercih Sonradan görme komut ve SysV init komut hem birlikte kullanılır. Ağ Yöneticisi ayrıca 16.04 adresinde bir Upstart betiği yüklüdür /etc/init/network-manager.conf
.
Çıktısını gözden sudo strace service network-manager restart
geçirirseniz, neler olduğunu anlayabilirsiniz. İlk olarak çıktı, systemctl
komutun systemd'ye yönlendirildiğini gösteren çağrıldığını gösterir . İlk olarak, açıldıktan kısa bir süre sonra /usr/bin/service
, dosyada kabuk komut dosyası olarak okumaya başladığını görebilirsiniz:
open("/usr/sbin/service", O_RDONLY) = 3
...
read(10, "#!/bin/sh\n\n#####################"..., 8192) = 8192
Artık service
bir kabuk betiği olduğunu bildiğimize göre , kaynak kodunu kontrol edebiliriz. Kaynak kodunda, is_systemd
tespit edildiğini ve ayarlandığını görüyoruz . Systemd durumu için, komutun yeniden yazıldığını görebilirsiniz systemctl restart network-manager
.
Bu nedenle, üç başlangıç sistemi bir arada mevcut ve bazı uyumluluklara sahip olsa da, karmaşıklık katmanları vardır. İleride olacakların karmaşıklığını en aza indirmek için, en iyisi systemd birim dosyalarını ve systemctl
hizmetleri yönetme aracını kullanmaktır.