Führen Sie diesen Befehl nicht aus, um ihn zu "testen", es sei denn, Sie sind auf einen Absturz vorbereitet und / oder erzwingen einen Neustart Ihres Systems.
Ich war in meiner Virtualbox mit 12.04 versuchen, eine App zu kompilieren, und während ich wartete, zufällig auf ein Forum, wo ein Kommentar sagte:
Versuchen :(){ :|: & };:
Spaß auch und braucht keine Wurzel.
Ohne nachzudenken, ließ ich es in meinem Gnome-Terminal laufen. Es hat meinen 12.04 (in Virtualbox) so schlecht verzögert, dass ich ihn herunterfahren musste.
Meine Frage ist, was macht dieser Befehl?
:(){ :|: & };:
Das nennt man a Gabelbombe.
:()
bedeutet, dass Sie eine aufgerufene Funktion definieren :
{:|: &}
bedeutet, dass Sie die Funktion ausführen :
und sende seine Ausgabe an die :
Funktion wieder und führen Sie das im Hintergrund.
Das ;
ist ein Befehlstrenner, wie &&
.
:
Läuft die Funktion beim ersten Mal.
Im Wesentlichen erstellen Sie eine Funktion, die sich bei jedem Aufruf zweimal aufruft und keine Möglichkeit hat, sich selbst zu beenden. Es wird sich weiter verdoppeln, bis Ihnen die Systemressourcen ausgehen.
In Virtualbox zu laufen war ziemlich vernünftig, sonst hättest du deinen PC neu starten müssen.
Dies ist ein so genanntes Gabelbombe in der Shell implementiert.
aus wikipedia:
:(){ :|:& };:
\_/| |||| ||\- ... the function ':', initiating a chain-reaction: each ':' will start two more.
| | |||| |\- Definition ends now, to be able to run ...
| | |||| \- End of function-block
| | |||\- disown the functions (make them a background process), so that the children of a parent
| | ||| will not be killed when the parent gets auto-killed
| | ||\- ... another copy of the ':'-function, which has to be loaded into memory.
| | || So, ':|:' simply loads two copies of the function, whenever ':' is called
| | |\- ... and pipe its output to ...
| | \- Load a copy of the function ':' into memory ...
| \- Begin of function-definition
\- Define the function ':' without any parameters '()' as follows:
Dieser Befehl ist eine bekannte Version des Gabelbombe

Dies führt dazu, dass auf Ihrem Computer nicht mehr genügend Arbeitsspeicher zur Verfügung steht, indem Sie einen Prozess unendlich oft ausführen. Es gibt einige Sicherheitsvorkehrungen, die Sie auch dagegen anwenden können:
Unix-Typ-Systeme haben typischerweise ein Prozesslimit, das durch einen ulimit-Shell-Befehl oder seinen Nachfolger, setrlimit, gesteuert wird. Linux-Kernel setzen und erzwingen das Rlimit_NPROC-Limit ("Ressourcenlimit") eines Prozesses. Wenn ein Prozess versucht, eine Verzweigung auszuführen, und der Benutzer, der diesen Prozess besitzt, bereits besitzt RLIMIT_NPROC
Prozesse, dann schlägt die Gabel fehl. Außerdem kann man unter Linux oder * BSD den pam_limits
Konfigurationsdatei /etc/security/limits.conf
mit dem gleichen Effekt. Allerdings haben nicht alle Distributionen von Linux die pam_limits
Modul standardmäßig installiert.
Gemäß Dies :(){ :|: & };:
wird genannt
Gabelbrücke ist eine Art poetischer Virenschöpfer
... Das verschlagene kleine Programm befiehlt es, mehrere Kopien davon zu machen
selbst, wodurch eine Kettenreaktion ausgelöst und somit schnell die
Systemressourcen ...
Es ist daher ratsam, dies nicht zu tun, da dies zu Schäden an der Hardware führen kann, da es eine Ausführung in der Schleife verursacht, was in Laptops leicht zu einer Erwärmung führen kann.
Ein weiterer Link erklärt durch Screenshots Hier.