Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

DANGER!

Do not run this command to 'test' it unless you are prepared for a crash and/or force-rebooting your system.

I was in my Virtualbox running 12.04 trying to compile an app, and while waiting I happened to chance upon a forum where a comment said:

Try :(){ :|: & };:
Fun, too, and doesn't need root.

Without thinking, I ran it in my gnome-terminal. It made my 12.04(in Virtualbox) lag so badly, I had to shut it down.

My question is what does this command do?

:(){ :|: & };:
share|improve this question
27  
related How to protect Ubuntu from fork bomb –  Sathya Jul 4 '12 at 11:35
1  
Also see an old thread: ubuntuforums.org/showthread.php?t=1392511 –  Paddy Landau Jul 10 '12 at 6:17
    
add comment

4 Answers

up vote 175 down vote accepted

This is called a fork bomb.

:() means you are defining a function called :

{:|: &}; means run the function : and send its output to the : function again and run that in the background.

: runs the function the first time.

Essentially you are creating a function that calls itself twice every call and doesn't have any way to terminate itself. It will keep doubling up until you run out of system resources.

Running in Virtualbox was quite sensible really otherwise you would have had to restart your pc.

share|improve this answer
15  
This answer seems to suggest that rebooting is the only recourse. But in fact this fork bomb can be killed without rebooting, and I’ve actually observed that it doesn’t work properly on some systems anyway (because their spawn limit is set sensibly). –  Konrad Rudolph Jul 4 '12 at 14:07
9  
Actually, for a full explanation this should probably mention that ; is a command separator. The { ... } part is simply the content of the function. –  Michael Kjörling Jul 4 '12 at 14:08
    
@MichaelKjörling +1 I didn't even understand the syntax until I took into consideration your comments. –  jumpnett Jul 11 '12 at 23:39
add comment

This is so called fork bomb implemented in shell.

from 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:
share|improve this answer
add comment

That command is a well known version of the fork bomb

fork bomb pic from wikipedia

It causes your computer to run out of memory by forking a process infinitely. There exist some safeguards you can use against it as well:

Unix-type systems typically have a process-limit, controlled by a ulimit shell command or its successor, setrlimit. Linux kernels set and enforce the RLIMIT_NPROC rlimit ("resource limit") of a process. If a process tries to perform a fork and the user that owns that process already owns RLIMIT_NPROC processes, then the fork fails. Additionally, on Linux or *BSD, one can edit the pam_limits config file /etc/security/limits.conf to the same effect. However, not all distributions of Linux have the pam_limits module installed by default.

share|improve this answer
add comment

According to this :(){ :|: & };: is called

Forkbomb is a kind of poetic virus creator

...The devious little program commands it to make multiple copies of itself, setting off a chain reaction and thus quickly exhausting the system’s resources...

So advised not to run this, could cause damage to hardware since it causes loopwise execution, may cause heating easily in laptops.

Another link explains through screen shots here.

share|improve this answer
26  
If a fork bomb causes hardware damage, then you have a much bigger and deeper problem. –  Michael Kjörling Jul 4 '12 at 14:15
18  
Maybe he was talking about a bomb with shape of fork that can explode near your PC ? –  dysoco Jul 4 '12 at 18:02
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.