Tak więc jednym z punktów zadań upstart jest łatwość pisania.
W skryptach init.d jest wiele magicznych skryptów powłoki, które powtarzają się w kółko. Instrukcje przypadków, śledzenie pliku pidfile, wiersze komentarza lsb. Nie jest bardzo jasne, jak napisać DOBRY skrypt init.d bez przeczytania go.
Jeśli masz już problem z napisaniem tego wszystkiego, nie potrzebujesz pracy dla początkujących, chyba że, jak wspomniałem w innym komentarzu, zależysz od innej pracy / wydarzenia dla początkujących.
Ale tak naprawdę upstart sprawia, że wszystko jest naprawdę proste. Nie powinieneś potrzebować wstępnego uruchomienia, chyba że musisz skonfigurować takie rzeczy, jak tmpdirs, ulimits lub argumenty środowiska uruchomieniowego. Nie powinieneś potrzebować post-postu, chyba że chcesz się upewnić, że posprzątasz po usłudze (usługa naprawdę powinna sprzątać po sobie przy normalnym wyjściu).
Często gigantyczny skrypt init.d z wieloma opcjami sprowadza się do zadania rozpoczynającego się od 10 do 15 linii. Najbardziej skomplikowane skrypty init.d mogą wrzucić większość logiki do przedstartowych. Kluczem jest to, że jest to tylko mały fragment kodu, aby skonfigurować środowisko dla procesu, a nie logika w obsłudze start / stop / respawn / etc.
Najtrudniejsza i najczęściej popełniana przez ludzi pomyłka to wiedza, kiedy rozpocząć / zakończyć pracę. start on runlevel [2345]
wydaje się logiczne, ale ignoruje fakt, że sieć pojawia się równolegle w tym punkcie, podobnie jak montowanie lokalnego systemu plików. Kluczem jest, aby spróbować dokładnie określić minimum potrzebnych rzeczy (inne usługi, systemy plików, sieć itp.), Aby uruchomić, i rozpocząć, gdy zostaną wykonane. Powinna wystarczyć większość tradycyjnych usług sieciowych start on (local-filesystems and net-device-up IFACE!=lo)
.