Mögliches Duplikat:
Was bedeutet dieser kryptische Bash-Befehl?
Warum stürzt dieser Befehl Linux ab?
:(){ :|:& };:
Mögliches Duplikat:
Was bedeutet dieser kryptische Bash-Befehl?
Warum stürzt dieser Befehl Linux ab?
:(){ :|:& };:
Antworten:
Dies nennt man eine Gabelbombe .
Der Befehl definiert eine Funktion namens :, die beim Aufruf zwei Kopien von sich selbst im Hintergrund erzeugt und beendet. Diese beiden Kopien machen dasselbe, was in nur einer Sekunde zu einer enormen Anzahl von Prozessen führt, die auf unbestimmte Zeit fortgesetzt werden.
Das Folgende ist genau die gleiche Funktion, jedoch mit einem besser lesbaren Namen:
foo() {
foo | foo &
}
foo
Technisch gesehen ist das System nicht abgestürzt. Ein Systemabsturz führt zu einem Exit mit Fehlern. Es hat auch nicht gehangen. Dies würde bedeuten, dass das System etwas tut und nicht zurückgekehrt ist. Im konkreten Fall funktioniert es einwandfrei. Die Antwort dauert einfach zu lange, da eine Computerrealisierung über endliche Ressourcen verfügt. Unendliche Prozesse und endliche Ressourcen haben daher eine unendliche Reaktionszeit zur Folge.