Gentoo Linux runscript depend loop

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: , , , , , , , , ,

Dodaj odpowiedź

Musisz się zalogować aby dodać komentarz.