GNU/Linux >> Znalost Linux >  >> Ubuntu

Proč se u příkazu „:(){ :|:&};:“ systém zpožďoval tak, že jsem musel restartovat?

NEBEZPEČÍ!

Nespouštějte tento příkaz, abyste jej ‚testovali‘, pokud nejste připraveni na havárii a/nebo vynucené restartování systému.

Zkoušel jsem ve svém Virtualboxu se systémem 12.04 zkompilovat aplikaci a během čekání jsem náhodou narazil na fórum, kde se v komentáři psalo:

Zkuste :(){ :|: & };:
Také zábava a nepotřebuje root.

Bez přemýšlení jsem to spustil ve svém gnome-terminálu. Můj 12.04 (ve Virtualboxu) se tak zpozdil, že jsem ho musel vypnout.

Moje otázka zní, co tento příkaz dělá?

:(){ :|:&};:

Nejlepší odpověď

Tomu se říká vidlicová bomba.

:() znamená, že definujete funkci s názvem :

{:|: &} znamená spustit funkci : a jeho výstup odešlete do : znovu spustit funkci a spustit ji na pozadí.

; je oddělovač příkazů.

: spustí funkci poprvé.

V podstatě vytváříte funkci, která se volá dvakrát při každém volání a nemá žádný způsob, jak se ukončit. Bude se neustále zdvojnásobovat, dokud vám nedojdou systémové prostředky.

Spuštění ve Virtualboxu bylo docela rozumné, jinak byste museli restartovat počítač.


Ubuntu
  1. Proč server zablokoval moji IP?

  2. Jak spustit příkaz jako správce systému (root)?

  3. Je systém schopen spustit 64bitový operační systém?

  1. Výstup „posledního“ příkazu?

  2. Ubuntu – Proč se příkaz Xmodmap nespustí při spuštění/přihlášení?

  3. Příkaz k zavření okna?

  1. Proč následující příkaz zabíjí systém?

  2. Co se stane, když spustím Command Init v terminálu Ubuntu Gnome?

  3. Linux – Proč nemůže jádro spustit inicializaci?