GNU/Linux >> Linux Esercitazione >  >> Linux

Il comando Bash :(){ :|:&};:genererà i processi fino alla morte del kernel. Puoi spiegare la sintassi?

:(){ :|:& };:

..definisce una funzione chiamata : , che si genera da solo (due volte, uno convoglia nell'altro) e fa da sfondo a se stesso.

Con interruzioni di riga:

:()
{
    :|:&
};
:

Rinominare il : funzione a forkbomb :

forkbomb()
{
    forkbomb | forkbomb &
};
forkbomb

Puoi prevenire tali attacchi usando ulimit per limitare il numero di processi per utente:

$ ulimit -u 50
$ :(){ :|:& };:
-bash: fork: Resource temporarily unavailable
$

In modo più permanente, puoi usare /etc/security/limits.conf (su Debian e altri, almeno), per esempio:

* hard nproc 50

Ovviamente ciò significa che puoi eseguire solo 50 processi, potresti volerlo aumentare a seconda di cosa sta facendo la macchina!


Questo definisce una funzione chiamata : che chiama se stesso due volte (Codice:: | : ). Lo fa in background (& ). Dopo l'; la definizione della funzione è terminata e la funzione : viene avviato.

Quindi ogni istanza di :inizia due nuovi :e così via... Come un albero binario di processi...

Scritto in semplice C che è:

fork();
fork();

Linux
  1. 3 comandi Linux per spegnere il sistema e sarai in grado di farlo facilmente

  2. La differenza tra gli operatori Bash [[ Vs [ Vs ( Vs ((?

  3. Spiega le opzioni del comando Readlink?

  4. Puoi eseguire Xcode in Linux?

  5. Esecuzione di una funzione dello spazio utente dallo spazio del kernel

4 modi per modificare un PDF con il comando pdftk-java

30 cose che non sapevi del kernel Linux

Come utilizzare il comando di lettura Bash

L'elenco delle scorciatoie da tastiera utili di Bash

Cosa dovrebbe fare il comando export in Linux?

Qual è la sintassi corretta di find -exec