GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum tötet der folgende Befehl ein System?

Versteht jemand den folgenden Code, der in Bash läuft?

:(){ :|:& };:

Es scheint ein „fork zu sein ” Bombe unter Linux.

Akzeptierte Antwort:

Es ist tatsächlich nicht so schwer zu entziffern.

Dieses Stück Code definiert nur eine Funktion namens : die zwei Instanzen von sich selbst in einer Pipeline aufruft::|:& . Nach der Definition wird eine Instanz dieser Funktion gestartet.

Dies führt zu einer schnell ansteigenden Anzahl von Subshell-Prozessen. Ungeschützte Systeme (Systeme ohne Begrenzung der Prozessanzahl pro Benutzer) werden von solchen Fork-Bomben stark in Mitleidenschaft gezogen, da legitime Prozesse schnell in die Unterzahl geraten und somit der meisten CPU-Ressourcen beraubt werden.


Linux
  1. Wie führe ich einen Befehl als Systemadministrator (root) aus?

  2. Ausgabe des „letzten“ Befehls?

  3. Wo finde ich den Quellcode des cp-Befehls?

  4. Ändern Sie den Standardbefehl find-grep in emacs

  5. Warum ruft popen() eine Shell auf, um einen Prozess auszuführen?

Befehl zum Herunterfahren von Linux

Lernen Sie Ihr System kennen (über die Befehlszeile)

Der Linux-Top-Befehl

So verwenden Sie den fd-Befehl auf einem Linux-System

So installieren und verwenden Sie den Ack-Befehl unter Linux

Der Befehl System Activity Reporter (sar) in Linux