ОПАСНОСТЬ!
Не запускайте эту команду, чтобы «протестировать» ее, если вы не готовы к сбою и / или принудительной перезагрузке системы.
Я был в моей Virtualbox под управлением 12.04, пытаясь скомпилировать приложение, и во время ожидания я случайно наткнулся на форум, где комментарий гласил:
Попробуйте
:(){ :|: & };:
Fun, и вам не нужен root.
Недолго думая, я запустил его в своем терминале гномов. Из-за этого мой 12.04 (в Virtualbox) завис так сильно, что пришлось его выключить.
Мой вопрос в том, что делает эта команда?
: () {: |: &} ;:
command-line
blade19899
источник
источник
Ответы:
Это называется вилочной бомбой .
:()
означает, что вы определяете функцию под названием:
{:|: &}
означает запустить функцию:
и:
снова отправить ее вывод в функцию и запустить ее в фоновом режиме.Это
;
разделитель команд.:
запускает функцию в первый раз.По сути, вы создаете функцию, которая вызывает себя дважды при каждом вызове и не имеет возможности завершить себя. Он будет удваиваться, пока у вас не закончатся системные ресурсы.
Запуск в Virtualbox был довольно разумным, иначе вам пришлось бы перезагрузить компьютер.
источник
;
это разделитель команд.{ ... }
Часть просто содержание функции.|
и&
делает. Я понимаю, что вы предоставили работу функции, но я хотел знать, что делают эти двоеЭто так называемая вилочная бомба, реализованная в оболочке.
из википедии:
источник
Эта команда является хорошо известной версией вилочной бомбы.
Это заставляет ваш компьютер исчерпать память, бесконечно разветвляя процесс. Существуют некоторые меры предосторожности, которые вы можете использовать против него:
источник
По этому
:(){ :|: & };:
называетсяПоэтому рекомендуется не запускать это, это может привести к повреждению оборудования, поскольку оно вызывает циклическое выполнение, может легко вызвать нагрев в ноутбуках.
Другая ссылка объясняет снимки экрана здесь .
источник
Как описано выше, она называется « бомба-вилка », и еще один способ сделать это - использовать фоновое выполнение, а не трубопровод:
источник