Nie wiem co przeciętny człowiek myśli pod prysznicem, ale mi wpadł do głowy pomysł zapętlenia skryptów startowych (sprawdzenia czy to w ogóle możliwe i jak zabezpieczyli się przed tym wydawcy danej dystrybucji / systemu).
Na początek Gentoo Linux (leży najbliżej prysznica). Prosty skrypt dummy-1 wygląda tak:
depend() {
need dummy-2
}
start() {
echo "dummy-1 on"
}
stop() {
echo "dummy-1 off"
}
Do tego jest jeszcze dummy-2 i dummy-3 różniące się od siebie wymaganiami (depend() -> need), tak, aby każdy z nich wymagał kolejnego, a ostatni – pierwszego. W ten sposób powstaje teoretycznie zapętlenie. Co uzyskamy po próbie uruchomienia? Poniżej wynik:
abg-ng ~ # /etc/init.d/dummy-1 start * ERROR: cannot start dummy-3 as dummy-1 could not start * ERROR: cannot start dummy-2 as dummy-3 could not start * ERROR: cannot start dummy-1 as dummy-2 could not start
Czyli nie da się. Najpierw dummy-1 wymaga, by dummy-2 się uruchomił, ten z kolei chce dummy-3, który ostatecznie ‘psuje zabawę’, bo wymaga dummy-1, który nie potrafił się uruchomić, więc jako pierwszy zgłasza błąd. Później dwa kolejne.
Na drugi ogień pójdzie FreeBSD z PROVIDE i REQUIRE.
Tagi: after, before, depend, FreeBSD, Gentoo, Gentoo Linux, need, PROVIDE, REQUIRE, runscript