"Grep bricht ab, wodurch der Startvorgang für immer hängen bleibt."

10

Frage innerhalb einer Frage (aus dem Debian-Wiki ):

Soll ich sid auf meinem Desktop verwenden?

Wenn Sie denken, dass Sie mit einem kaputten Debian-System umgehen können, sicher. Wissen Sie, was zu tun ist, wenn libpam0g unterbrochen wird und alle Anmeldungen verhindert werden? Wissen Sie, was zu tun ist, wenn grep unterbrochen wird und der Startvorgang für immer hängen bleibt? Diese Dinge sind passiert. Sie werden wieder passieren.

Meine Frage ist, wie ein Fehler dazu führt, grepdass der Startvorgang für immer hängen bleibt.

ixtmixilix
quelle
4
Ein Fehler, den ich gemacht habe, grepist grep -r pattern . > pattern.grep. Da die Shell die Ausgabedatei vor dem Aufrufen erstellt grep, grepdurchsucht der Befehl die Ausgabedatei, die wächst, bis die Festplatte voll ist. Ich habe keine Ahnung, ob dies mit irgendetwas zusammenhängt, das dazu führen könnte, dass der Startvorgang für immer hängen bleibt.
Keith Thompson

Antworten:

8

Es ist üblich, dass Boot-Skripte grepirgendwann aufgerufen werden. Wenn es grepaufgrund eines Fehlers hängt, grepbleibt das erste dieser Boot-Skripte, die aufgerufen werden, hängen. Wenn eines dieser Skripte fehlerhaft ist und grepohne Angabe eines Dateinamenarguments und ohne Umleitung der Eingabe grepaufgerufen wird, wartet es normalerweise ewig auf die Konsoleneingabe (das ist nicht so schlimm, wenn Sie sich vor der Konsole befinden und dies können Typ Ctrl+D). Wenn ein Skript defekt ist und grepeine Pipe oder ein Gerät aufruft, auf dem niemand schreibt ... schade.

Gilles 'SO - hör auf böse zu sein'
quelle
5

Nun, der offensichtliche Weg wäre "grep hängt für immer, also hängt etwas, das grep verwendet, für immer, und etwas im Boot-Prozess macht das".

Der Text ist wahrscheinlich eher illustrativ als wörtliche Beispiele für Probleme, aber es ist nicht unmöglich.

Um wirklich zu verstehen, lesen Sie unter /etc/init.d/rcund /etc/init.d/rcS- das sind die Shell-Skripte, die alle Bits ausführen, die Ihr System aufrufen.

Daniel Pittman
quelle