Ubuntu'da, TÜM otomatik başlatma servislerinin bir listesini gösterme komutu var mı?


22

Ubuntu’da

  1. Tüm otomatik başlatma hizmetlerinin listesini göstermek için bir komut var mı?
  2. Bir hizmetin önyükleme sırasında otomatik olarak başlatılıp başlatılmadığını kontrol etmek için bir komut var mı?

Google ve IRC'yi yaptım. Cevabı bulamıyorum. Belki Ubuntu'da böyle bir komut yoktur. Başlangıçta, otomatik olarak başlatılan tüm hizmetlerin altında olacağını düşündüm /etc/rc2.d/, ancak bu konuda yanılmışım. Bazıları sadece altında yapılandırılmıştır /etc/init/*.conf. Sonra chkconfigaracı denedim (manuel olarak yükledi), her zaman işe yaramıyor. Örneğin mongodb, otomatik olarak başlatıldığı için yanlış sonuç verir /etc/init/mongodb.conf.

service --status-allve initctl listotomatik başlatma durumu yerine yalnızca servislerin mevcut durumunu söyleyebilir. update-rc.dDurumu göstermek yerine autostart durumunu değiştirmek için kullanılan bir komuttur.

Soruma cevap yoksa, sadece Ubuntu'da autostart servislerini kontrol etmenin neden bu kadar zor olduğunu merak ediyorum.


Bence chkconfig --listdoğru çalışacak mı? onbu hizmetin bu çalışma düzeyinde çalıştığı anlamına gelir ve sistem önyüklendiğinde bu hizmet otomatik olarak başlar.
en fazla

1
Soruma yazdığım gibi, chkconfig her zaman işe yaramıyor. örneğin, mongodb için yanlış sonuç verecektir. Sanırım mongodb, autostart'ı yapmak için /etc/init/mongodb.conf dosyasını kullandığı için olabilir.
SSS

Ne dersiniz ls /etc/rc?.d?
toxaq

Yanıtlar:


11

Ubuntu Upstart, geleneksel initsistem yerine kullanır . Başlangıç, başlangıçtan daha güçlü, ancak biraz daha karmaşık init.

Başlangıcı, aksine, olay tabanlıdır. Bir "olay", "önyükleme" gibi bir şey olabilir ... veya "ağ şu anda kullanıma hazır" gibi çok daha belirgin olabilir. Hangi komut dosyalarının hangi olaylara bağlı olduğunu belirleyebilirsiniz. Bir etkinliği beklemeyen herhangi bir şey, herhangi bir CPU mevcut olduğunda çalışabilir.

Bu olaya dayalı sistemin başka bir avantajı var: Sistem çalıştıktan sonra bile teorik olarak kullanabilirsiniz. Upstart, başparmak sürücüleri (şu anda udev ve hal tarafından işlenir) gibi harici aygıtlara takma veya bunları takma veya belirli zamanlarda programları (şu anda cron tarafından yönetilen) çalıştırma gibi görevleri üstlenmek üzere düzenlenir.

Şimdi bilmeniz gerektiği gibi , başlangıçta çalışmayan ölü bir arka plan programı canlı olabilir ve bir olay nedeniyle başlar.

Ubuntu, eski SysV dosyaları için hem / etc / init, Upstart, hem de /etc/init.d dosyalarına sahiptir. İçindeki dosyalardan bazıları, henüz geçirilmemiş normal SysV Init komut dosyalarıdır. Ancak, taşınan bazı hizmetler /etc/init.d ile / lib / init / upstart-job arasındaki bağlantıyı koruyor. Bunlardan birini çalıştırırsanız çalışır, ancak önce bir uyarı yazdırır:

İnit komut dosyalarını /etc/init.d aracılığıyla çağırmak yerine service (8) yardımcı programını kullanın, örn. service mysql restart

Çağırmaya çalıştığınız komut dosyası bir Upstart işine dönüştürüldüğü için, restart (8) yardımcı programını da kullanabilirsiniz, örneğin, mysql komutunu yeniden başlatın.

Bir Upstart makinesinde, init, starttart'tan gelir. Upstart'ın init'i belirli bir çalışma seviyesine ait betikleri çağıran bir ana rc betiği çalıştırmak yerine, işleri kendi iş dizininden alır.

Artık otomatik başlatmalı ödülleri listelemenin basit bir yolu olmadığını biliyoruz, tüm ödevleri listelemeli ve tek tek kontrol etmelisiniz. Cennet daha sonraki bir olay inittarafından upstartya da hatta bir olay tarafından başlatılabilir . Bu listeyi almanın en basit yolu bu komutu kabuğun içinde çalıştırıyor:

initctl show-config

Çıktı şöyle görünür:

...
hostname
  start on startup
udevtrigger
  start on ((startup and started udev) and not-container)
tty2
  start on (runlevel [23] and ((not-container or container CONTAINER=lxc) or container CONTAINER=lxc-libvirt))
...

İlki gibi bazı öğeler çok basittir, hostnamebaşlangıçta başlar. Ancak diğer öğeler daha karmaşık görünebilir. (Ama neyse ki insan okunabilir :-))


Neyin paylaştığını biliyordum. Bilmediğim yeni bir şey olsa da, sorunumu hala çözemezler. İşi kolay yapabilecek bir komut olup olmadığını bilmek isterim (hem başlangıç ​​hem de init hizmetleri için). Görünüşe göre Ubuntu'da bir tane yok. Ne yazık! bu arada, "initctl", geleneksel init sisteminden ziyade, yalnızca başlangıç ​​hizmetlerini kullanabilir. Kolay bir yolu yoksa, o zaman zor yolu kullanmak zorundayım ... teşekkürler.
SSS

Hatalı olmasa da , ubuntu'nun modern versiyonları sisteme geçmiştir. Eğlenceli bir şekilde bu cevabın iyi bir kısmı hala geçerli
Journeyman Geek

Ubuntu’nun yeni sürümleri açılış sistemini
João Pimentel Ferreira

5

Aslında, tüm hizmetler yalnızca /etc/init.d altında bulunur:

rc0.d contains the services which runs in runlevel 0
rc1.d contains the services which runs in runlevel 1
rc2.d contains the services which runs in runlevel 2
rc3.d contains the services which runs in runlevel 3
rc4.d contains the services which runs in runlevel 4
rc5.d contains the services which runs in runlevel 5
rc6.d contains the services which runs in runlevel 6

Bir şey daha, tüm hizmetler de altında mevcut rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d, ancak bu /etc/init.dsadece sembolik bir bağ .

Buraya bakınız bu rc1.ddizinin içeriği :

lrwxrwxrwx 1 root root  20 Aug 17 14:54 K15pulseaudio -> ../init.d/pulseaudio
lrwxrwxrwx 1 root root  22 Nov 28 18:47 K20acpi-support -> ../init.d/acpi-support
lrwxrwxrwx 1 root root  20 Aug 17 14:54 K20kerneloops -> ../init.d/kerneloops
lrwxrwxrwx 1 root root  23 Nov  7 15:24 K20openbsd-inetd -> ../init.d/openbsd-inetd
lrwxrwxrwx 1 root root  15 Aug 17 14:54 K20saned -> ../init.d/saned
lrwxrwxrwx 1 root root  27 Aug 17 14:54 K20speech-dispatcher -> ../init.d/speech-dispatcher
-rw-r--r-- 1 root root 369 Apr 14  2012 README
lrwxrwxrwx 1 root root  19 Aug 17 14:54 S30killprocs -> ../init.d/killprocs
lrwxrwxrwx 1 root root  19 Aug 17 14:54 S70dns-clean -> ../init.d/dns-clean

Burada init.d sembolik bağlantısını görebilirsiniz (K15pulseaudio -> ../init.d/pulseaudio).

Fakat burada her servis init.d ile bağlantılı, değil mi? Ancak her hizmet başlamayacak; Sebep iki senaryo.

İlki bir S betiğidir (S30killprocs) ---> start

İkincisi, bir k betiğidir (K15pulseaudio) ---> kill

Tüm K betiği hizmetleri hizmetleri öldürür ve tüm S betiği hizmetleri bu çalışma seviyesi için hizmetleri başlatır.

Kısaca

S70dns-clean -> ../init.d/dns-cleandns-cleanhizmeti birinci seviye 1'de başlatın .

K15pulseaudio -> ../init.d/pulseaudiopulseaudio1 seviyesindeki hizmeti öldürür .


Burada hiç görünmeyen hizmetlere başlamak için doğru değil.
Wildcard

2

RC seviyelerini grafiksel olarak konfigüre etmek / göstermek için bir ncurses programı olan sysv-rc-conf programını yükleyebilirsiniz.


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.