Pytanie w obrębie pytania (z wiki Debiana ):
Czy powinienem używać sid na pulpicie?
Jeśli uważasz, że poradzisz sobie ze zepsutym systemem Debian, na pewno. Czy wiesz, co zrobić, jeśli libpam0g ulegnie awarii, uniemożliwiając wszystkie logowanie? Czy wiesz, co zrobić, jeśli grep się zepsuje, powodując zawieszenie procesu uruchamiania na zawsze? Te rzeczy się wydarzyły. Oni się powtórzą.
Moje pytanie brzmi: w jaki sposób zepsuty grep
powoduje, że proces uruchamiania zawiesza się na zawsze?
grep
jestgrep -r pattern . > pattern.grep
. Ponieważ powłoka tworzy plik wyjściowy przed wywołaniemgrep
,grep
polecenie przeszukuje plik wyjściowy, który rośnie aż do zapełnienia dysku. Nie mam pojęcia, czy ma to związek z czymkolwiek, co mogłoby spowodować zawieszenie procesu uruchamiania na zawsze.Odpowiedzi:
Skrypty rozruchowe często wywołują
grep
w pewnym momencie. Jeśligrep
zawiesza się z powodu błędu, pierwszy z tych skryptów rozruchowych, który wywołujegrep
, zawiesi się. Lub, częściej, jeśli jeden z tych skryptów jest uszkodzony i wywołaniagrep
bez podania argumentu nazwy pliku i bez przekierowania danych wejściowych,grep
będą siedzieć wiecznie i czekać na dane wejściowe konsoli (nie jest tak źle, jeśli jesteś przed konsolą i możesz typCtrl+D
). Jeśli skrypt jest uszkodzony i wywołujegrep
potok lub urządzenie, na którym nikt nie pisze… szkoda.źródło
Cóż, oczywistym sposobem byłoby „grep zawiesza się na zawsze, więc coś, co używa grep zawiesza się na zawsze, i coś w procesie rozruchu to robi”.
Tekst prawdopodobnie będzie raczej ilustracyjny niż dosłowne przykłady problemów, ale nie jest to niemożliwe.
Aby naprawdę zrozumieć, zacznij czytać od
/etc/init.d/rc
i/etc/init.d/rcS
- są to skrypty powłoki, które uruchamiają wszystkie bity, które wywołują twój system.źródło