Ubuntu używa Upstart
zamiast tradycyjnego init
systemu. Upstart jest silniejszy niż init, ale jest nieco bardziej skomplikowany niż init
.
Natomiast Upstart opiera się na zdarzeniach. „Zdarzenie” może być czymś w rodzaju „rozruchu” ... lub może być o wiele bardziej szczegółowe, na przykład „sieć jest gotowa do użycia”. Możesz określić, które skrypty zależą od tego, które zdarzenia. Wszystko, co nie czeka na zdarzenie, może działać, gdy jest dostępny procesor.
Ten system oparty na zdarzeniach ma jeszcze jedną zaletę: możesz teoretycznie używać go nawet po uruchomieniu systemu. Upstart ma ostatecznie przejąć zadania takie jak podłączanie urządzeń zewnętrznych, takich jak pendrive'y (obecnie obsługiwane przez udev i hal), lub uruchamianie programów w określonych momentach (obecnie obsługiwanych przez crona).
Jak powinieneś teraz wiedzieć, martwy demon (który nie uruchamia się podczas uruchamiania) może być żywy i uruchamia się z powodu zdarzenia.
Ubuntu ma zarówno / etc / init, dla Upstart, jak i /etc/init.d, dla starych plików SysV. Niektóre zawarte w nim pliki to zwykłe skrypty początkowe SysV, które nie zostały jeszcze zmigrowane. Jednak niektóre migrowane usługi utrzymują łącze z /etc/init.d do / lib / init / upstart-job. Jeśli uruchomisz jeden z nich, działa, ale najpierw drukuje ostrzeżenie:
Zamiast wywoływać skrypty inicjujące przez /etc/init.d, użyj narzędzia service (8), np service mysql restart
Ponieważ skrypt, który próbujesz wywołać, został przekonwertowany na zadanie Upstart, możesz również użyć narzędzia restart (8), np. Restart mysql.
Na maszynie Upstart, init pochodzi z upstartu. Zamiast uruchamiania głównego skryptu rc, który wywołuje skrypty dla określonego poziomu uruchamiania, init Upstart pobiera zadania z katalogu zadań.
Teraz wiemy, że nie ma prostego sposobu na wyświetlenie listy demonów autostartu, powinieneś wymienić wszystkie demony i sprawdzić je pojedynczo. Demon może być uruchomiony przez init
lub upstart
nawet w późniejszym zdarzenia.
Najprostszym sposobem na uzyskanie tej listy jest uruchomienie tego polecenia w powłoce:
initctl show-config
Dane wyjściowe wyglądają następująco:
...
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))
...
Niektóre elementy, takie jak pierwszy, są tak proste, hostname
zaczynają się przy starcie. Ale inne przedmioty mogą wyglądać na bardziej skomplikowane. (Ale na szczęście czytelne dla człowieka :-))
chkconfig --list
zadziała dobrze?on
oznacza, że usługa działa na tym poziomie pracy, a usługa ta uruchomi się automatycznie po uruchomieniu systemu.