307 votes

Pourquoi la commande " :(){ :| : & }; :" a rendu mon système si lent qu'il a dû redémarrer ?

DANGER !

N'exécutez pas cette commande pour la "tester" si vous n'êtes pas prêt à subir un crash et/ou un redémarrage forcé de votre système.

J'étais dans ma Virtualbox sous 12.04 en train d'essayer de compiler une application, et pendant que j'attendais, je suis tombé par hasard sur un forum où un commentaire disait :

Essayez :(){ :|: & };:
Amusant, aussi, et n'a pas besoin de racine.

Sans réfléchir, je l'ai exécuté dans mon terminal gnome. Il a fait en sorte que ma 12.04 (dans Virtualbox) soit si lente que j'ai dû l'éteindre.

Ma question est la suivante : que fait cette commande ?

:(){ :| : & }; :

393voto

SuperMatt Points 3953

C'est ce qu'on appelle un bombe à fourche .

:() signifie que vous définissez une fonction appelée :

{:|: &} signifie exécuter la fonction : et envoie sa sortie au : et l'exécuter en arrière-plan.

El ; est un séparateur de commande.

: exécute la fonction la première fois.

En fait, vous créez une fonction qui s'appelle deux fois à chaque appel et qui n'a aucun moyen de se terminer. Elle continuera à s'appeler deux fois jusqu'à ce que vous n'ayez plus de ressources système.

L'exécution dans Virtualbox était tout à fait raisonnable, sinon vous auriez dû redémarrer votre ordinateur.

190voto

Guest User Points 61

C'est un soi-disant bombe à fourche implémenté dans Shell.

de 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:

78voto

Nemo Points 9032

Cette commande est une version bien connue de la bombe à fourche

fork bomb pic from wikipedia

Il fait en sorte que votre ordinateur se retrouve à court de mémoire en bifurquant un processus à l'infini. Il existe également des mesures de protection contre ce phénomène :

Les systèmes de type Unix ont généralement une limite de processus, contrôlée par une commande ulimit Shell ou son successeur, setrlimit. Les noyaux Linux fixent et font respecter la rlimit RLIMIT_NPROC ("limite de ressources") d'un processus. Si un processus tente d'effectuer un fork et que l'utilisateur qui possède ce processus possède déjà RLIMIT_NPROC processus, alors la bifurcation échoue. De plus, sous Linux ou *BSD, on peut modifier le fichier pam_limits fichier de configuration /etc/security/limits.conf au même effet. Cependant, toutes les distributions de Linux ne disposent pas de la pam_limits installé par défaut.

20voto

atenz Points 12194

Selon こん :(){ :|: & };: s'appelle

Bombe à fourche est une sorte de créateur de virus poétique

...Le petit programme sournois lui commande de faire de multiples copies de lui-même, déclenchant une réaction en chaîne et épuisant ainsi rapidement les les ressources du système...

Il est donc conseillé de ne pas l'exécuter, car il pourrait endommager le matériel en raison de l'exécution de boucles, ce qui pourrait facilement provoquer un échauffement des ordinateurs portables.

Un autre lien explique par des captures d'écran ici .

2voto

karlsebal Points 289

On l'appelle un " bombe à fourche "Une autre façon de procéder serait d'utiliser l'exécution en arrière-plan plutôt que le piping :

:(){ :&:;};:

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X