ОПАСНОСТЬ!
Не выполняйте эту команду, чтобы 'протестировать' его, если Вы не подготовлены к катастрофическому отказу и/или перезагрузке силы Ваша система.
Я был в своем Virtualbox, выполняющем 12,04 попыток скомпилировать приложение, и при ожидании я, оказалось, случайно натыкался на форум где сказанный комментарий:
Попробовать
:(){ :|: & };:
Забава также и не должна базироваться.
Без взглядов я выполнил его в своем терминале гнома. Это сделало мои 12.04 (в Virtualbox) задержкой так плохо, я должен был завершить работу его.
Мой вопрос - то, что делает эта команда?
:(){ :|: & };:
Это называется вилка бомба .
:()
означает, что вы определяете функцию под названием :
{:|: &}
означает, что запустите функцию :
и снова отправьте свой вывод в функцию :
и запустите ее в фоновом режиме.
;
является разделителем команд, как &&
.
:
запускает функцию в первый раз.
По сути, вы создаете функцию, которая вызывает себя дважды при каждом вызове и не имеет возможности завершить себя. Он будет удваиваться, пока у вас не закончатся системные ресурсы.
Запуск в Virtualbox был весьма разумным, иначе вам пришлось бы перезагрузить компьютер.
Это так называемая вилочная бомба , реализованная в оболочке.
из википедии:
:(){ :|:& };:
\_/| |||| ||\- ... 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:
Согласно этот :(){ :|: & };:
называется
Forkbomb является своего рода создателем поэтического вируса
... коварная маленькая программа приказывает сделать несколько копий самой себя, вызывая цепную реакцию и, таким образом, быстро истощая ресурсы системы ...
blockquote>Поэтому рекомендуется не запускать это, это может привести к повреждению оборудования, так как это вызывает циклическое выполнение, может легко вызвать нагрев в ноутбуках.
Другая ссылка объясняет через скриншоты здесь .
Эта команда является хорошо известной версией разветвленной бомбы
. Это приводит к тому, что вашему компьютеру не хватает памяти, когда он разветвляется процесс бесконечно. Существуют также некоторые меры предосторожности, которые вы можете использовать против него:
Системы Unix-типа обычно имеют ограничение по процессу, управляемое командой оболочки ulimit или ее преемником, setrlimit. Ядра Linux устанавливают и применяют ограничение RLIMIT_NPROC («ограничение ресурсов») процесса. Если процесс пытается выполнить ответвление, а пользователь, которому принадлежит этот процесс, уже владеет процессами
BLOCKQUOTE>RLIMIT_NPROC
, тогда ответвление завершается ошибкой. Кроме того, в Linux или * BSD можно отредактировать файл конфигурацииpam_limits
/etc/security/limits.conf
с тем же эффектом. Однако не во всех дистрибутивах Linux модульpam_limits
установлен по умолчанию.
Это называют “ fork-бомба ”, как объяснено выше, и другой способ сделать, это должно было бы использовать фоновое выполнение вместо передачи по каналу:
:(){ :&:;};: