It’s a fork bomb. It creates and calls a function called : that calls itself and pipes the output to itself in the background.<p>Properly indented and commented, it would look something like:<p><pre><code> :() # create a function called ":" with no arguments
{ # start the function
: | : & # call ":", pipe the output to another invocation of ":", and run in the background
}; # end the function
:
</code></pre>
P.S. Don't try this at home
You might suggest folks make this a learning exercise in pam or systemd cgroup limits to protect against fork-bombs [1] Code bugs can accidentally introduce the same condition. A starting point for cgroup limits and pam limits would be ServerFault [2]<p>It is a common misconception that today people can just "shoot a vm / container in the head" to solve all problems, but if your problem is buggy code then the new VM / container will crash the moment the code executes. Diagnosing and resolving quickly gets harder without system limits in place.<p>[1] - <a href="https://en.wikipedia.org/wiki/Fork_bomb" rel="nofollow">https://en.wikipedia.org/wiki/Fork_bomb</a><p>[2] - <a href="https://serverfault.com/search?q=cgroup+limits" rel="nofollow">https://serverfault.com/search?q=cgroup+limits</a>