Jak usługi systemowe są uruchamiane w 12.10?

12

Jedną rzeczą, która zawsze myliła mnie w Ubuntu, był sposób uruchamiania usług systemowych. Wiem, że Ubuntu używa Upstart i obsługuje SysV, ale który z nich służy do uruchamiania usług? Ma to znaczenie, gdy chcesz uruchomić usługę „ręcznie”.

Na przykład w moim systemie mam pliki następujących usług w /etc/init.d/<service>(SysV) i /etc/init/<service>.conf(Upstart):

acpid, mysql, networking, qemu-kvm, ufw, libvirt-bin

Więc jeśli chcę wyłączyć wykonywanie MySQL podczas uruchamiania, muszę użyć metody Upstart lub SysV, aby ją wyłączyć? Ponadto, jak mogę stwierdzić, który z nich jest naprawdę używany do uruchomienia usługi ogólnej?

Edytować

Naprawdę nie ma wątpliwości, jak wyłączyć / włączyć usługi za pomocą SysV / Upstart. To, co naprawdę mnie dezorientuje, to fakt, że niektóre usługi wydają się być jednocześnie zdefiniowane (i włączone) w SysV i Upstart. Czy istnieje jakikolwiek priorytet między nimi (np. Jeśli mysqljest włączony w obu uruchom go za pomocą SysV)? Czy może tak się dzieje, że jedno narzędzie używa drugiego w tle?

Salem
źródło
1
Spójrz na zaakceptowaną odpowiedź tutaj: askubuntu.com/questions/133807/... ma kilka interesujących linków.
Rinzwind

Odpowiedzi:

2

Jeśli chodzi o usługi zdefiniowane zarówno w SysV, jak i upstart, zazwyczaj po ponownym uruchomieniu przez SysV zobaczysz coś takiego:

al@al-mythtv:~$ sudo /etc/init.d/mysql restart
[sudo] password for al: 
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop mysql ; start mysql. The restart(8) utility is also available.
mysql stop/waiting
mysql start/running, process 29846

Mam na myśli to, że Upstart jest preferowany dla tych usług, a implementacja SysV jest tylko opakowaniem.

Myślę też, że masz znaczenie katalogów wstecz. / etc / init to konfiguracja wstępna, /etc/init.d to kompatybilność z SysV, ale to tylko dowiązania symboliczne do uruchomienia dla tego typu usług.

Alistair Buxton
źródło
6

Zależy to w dużej mierze od aplikacji i jej opiekuna opakowania.

Skrypty Upstart są bardzo preferowane, ponieważ obsługują zdarzenia (co na ogół jest świetną rzeczą), ale wiele aplikacji nie ma wystarczającej liczby dostępnych skryptów Upstart lub opiekun aplikacji zdecydował się pozostać przy ustawieniach domyślnych (aplikacji lub Debiana) .

Tak czy inaczej, jesteś w sytuacji, w której musisz się dostosować.

  • Dla Upstart:
    • Zmień nazwę pliku na coś, co się nie kończy .conf, lub
    • Dodaj manualdo pliku. Umożliwi to ręczne załadowanie usługi.
  • W przypadku starszych usług:

    update-rc.d -f <service> remove
    

Jeśli masz /etc/init.d/skrypt na coś i na /etc/init/skrypcie i chcesz sprawdzić, czy wersja init.d jest wciąż żywe, można skontaktować się z:

ls -l /etc/rc?.d/*<service>

Jeśli widzisz mnóstwo dowiązań symbolicznych, jest on zainstalowany w starej inicjalizacji SysV.

Oli
źródło
Więc jeśli mam usługę, która jest włączona w SysV i Upstart (na przykład acpid), mogę założyć, że została uruchomiona przez SysV? A jeśli chcę to wyłączyć, musiałbym to zrobić za pomocą update-rc.dsztuczki polegającej na zmianie nazwy?
Salem,