GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Perché il comando “:(){ :|:&};:” ha ritardato il sistema così tanto che ho dovuto riavviare?

PERICOLO!

Non eseguire questo comando per "testarlo" a meno che tu non sia pronto per un arresto anomalo e/o il riavvio forzato del sistema.

Ero nel mio Virtualbox in esecuzione 12.04 cercando di compilare un'app e durante l'attesa mi è capitato di imbattermi in un forum in cui un commento diceva:

Prova :(){ :|: & };:
Anche divertente e non ha bisogno di root.

Senza pensare, l'ho eseguito nel mio gnome-terminale. Ha ritardato così tanto il mio 12.04 (in Virtualbox) che ho dovuto spegnerlo.

La mia domanda è cosa fa questo comando?

:(){ :|:&};:

Migliore risposta

Questa è chiamata bomba a forcella.

:() significa che stai definendo una funzione chiamata :

{:|: &} significa eseguire la funzione : e invia il suo output a : funzione di nuovo ed eseguilo in background.

Il ; è un separatore di comandi.

: esegue la funzione la prima volta.

In sostanza stai creando una funzione che si chiama due volte ad ogni chiamata e non ha modo di terminare se stessa. Continuerà a raddoppiare fino a quando non esaurirai le risorse di sistema.

L'esecuzione in Virtualbox era abbastanza sensato, altrimenti avresti dovuto riavviare il PC.


Ubuntu
  1. Scarica un file su Ubuntu utilizzando la riga di comando sul sistema Ubuntu 20.04

  2. Perché il server ha bloccato il mio IP?

  3. Ubuntu:perché il comando Xmodmap non viene eseguito all'avvio/accesso?

  4. Perché il seguente comando sta uccidendo un sistema?

  5. Linux:perché il kernel non può eseguire Init?

Comando di riavvio (riavvio) di Linux

Come riavviare Debian usando la riga di comando

3 modi per riavviare Ubuntu tramite la riga di comando

Il comando principale di Linux

Perché la "riparazione all'avvio" è elencata due volte nella documentazione di Ubuntu?

Come utilizzare il comando fd sul sistema Linux