Vzhledem k tomu, že Ubuntu již nějakou dobu spoléhá na upstart, rád bych použil úlohu upstart k elegantnímu vypnutí určitých aplikací při vypnutí nebo restartu systému. Je nezbytné, aby se vypínání nebo restartování systému zastavilo, dokud nebudou tyto aplikace ukončeny.
Aplikace budou příležitostně spouštěny ručně a při vypnutí systému by měly být automaticky ukončeny skriptem (který již mám). Vzhledem k tomu, že aplikace nelze spolehlivě ukončit bez spuštěných (téměř všech) ostatních služeb, je třeba aplikace ukončit dříve, než začne zbytek vypínání.
Myslím, že to mohu vyřešit počáteční úlohou, která se spustí při vypnutí, ale nejsem si jistý, které události bych měl jakým způsobem použít. Zatím jsem četl následující (částečně protichůdná) tvrzení:
- V upstart nedochází k žádné obecné události vypnutí
- Použijte stanzu jako
start on starting shutdown
v definici práce - Použijte stanzu jako
start on runlevel [06S]
v definici práce - Použijte stanzu jako
start on starting runlevel [06S]
v definici práce - Použijte stanzu jako
start on stopping runlevel [!06S]
v definici práce
Z těchto doporučení vyvstávají následující otázky:
- Existuje nebo neexistuje obecná událost vypnutí v upstartu Ubuntu?
- Jaký je doporučený způsob implementace „vypínacího háku“?
- Kdy jsou spuštěny události runlevel [x]; je to při vstupu do úrovně běhu nebo při vstupu do úrovně běhu?
- Můžeme použít něco jako
start on starting runlevel [x]
nebostart on stopping runlevel [x]
? - Jaké by bylo nejlepší řešení mého problému?
Děkuji mnohokrát
Přijatá odpověď:
starting
a runlevel
jsou samostatné události, takže nemůžete smysluplně říct starting runlevel N
.
runlevel N
událost se vygeneruje na začátku vstupu do úrovně běhu. Pokud start on runlevel N
pak váš úkol běží při vstupu. Způsob spuštění po dokončení vstupu do úrovně běhu je run on started rc RUNLEVEL=N
.
Pokud tomu dobře rozumím, potřebujete start on runlevel [06S]
dělat, co chcete; měl by teoreticky běžet, než se zastaví cokoliv jiného. Pro jemnější ovládání můžete použít start on stopping apache or stopping mysql or ...
aby se vaše úloha spustila dříve, než bude povoleno vypnout kteroukoli z nich.
Upraveno pro změnu úrovně běhu 5 na S.