:(){ :|:& };:
..mendefinisikan fungsi bernama :
, yang memunculkan dirinya sendiri (dua kali, satu menyalurkan ke yang lain), dan latar belakangnya sendiri.
Dengan jeda baris:
:()
{
:|:&
};
:
Mengganti nama :
berfungsi untuk forkbomb
:
forkbomb()
{
forkbomb | forkbomb &
};
forkbomb
Anda dapat mencegah serangan tersebut dengan menggunakan ulimit
untuk membatasi jumlah proses per pengguna:
$ ulimit -u 50
$ :(){ :|:& };:
-bash: fork: Resource temporarily unavailable
$
Lebih permanen, Anda dapat menggunakan /etc/security/limits.conf
(setidaknya pada Debian dan lainnya), misalnya:
* hard nproc 50
Tentu saja itu berarti Anda hanya dapat menjalankan 50 proses, Anda mungkin ingin meningkatkannya tergantung pada apa yang dilakukan mesin!
Itu mendefinisikan fungsi yang disebut :
yang memanggil dirinya sendiri dua kali (Kode:: | :
). Itu dilakukan di latar belakang (&
). Setelah ;
definisi fungsi selesai dan fungsi :
memulai.
Jadi setiap instance dari :memulai dua yang baru :dan seterusnya... Seperti proses pohon biner...
Ditulis dalam C biasa yaitu:
fork();
fork();