Почему сделал команду “:() { :|: & };”: заставьте мою систему отстать так плохо, я должен был перезагрузить?

ОПАСНОСТЬ!

Не выполняйте эту команду, чтобы 'протестировать' его, если Вы не подготовлены к катастрофическому отказу и/или перезагрузке силы Ваша система.

Я был в своем Virtualbox, выполняющем 12,04 попыток скомпилировать приложение, и при ожидании я, оказалось, случайно натыкался на форум где сказанный комментарий:

Попробовать :(){ :|: & };:
Забава также и не должна базироваться.

Без взглядов я выполнил его в своем терминале гнома. Это сделало мои 12.04 (в Virtualbox) задержкой так плохо, я должен был завершить работу его.

Мой вопрос - то, что делает эта команда?

:(){ :|: & };:

289
задан 13 April 2017 в 15:23

5 ответов

Это называется вилка бомба .

:() означает, что вы определяете функцию под названием :

{:|: &} означает, что запустите функцию : и снова отправьте свой вывод в функцию : и запустите ее в фоновом режиме.

; является разделителем команд, как &&.

: запускает функцию в первый раз.

По сути, вы создаете функцию, которая вызывает себя дважды при каждом вызове и не имеет возможности завершить себя. Он будет удваиваться, пока у вас не закончатся системные ресурсы.

Запуск в Virtualbox был весьма разумным, иначе вам пришлось бы перезагрузить компьютер.

0
ответ дан 13 April 2017 в 15:23

Это так называемая вилочная бомба , реализованная в оболочке.

из википедии:

:(){ :|:& };:
\_/| |||| ||\- ... 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:
0
ответ дан 13 April 2017 в 15:23

Согласно этот :(){ :|: & };: называется

Forkbomb является своего рода создателем поэтического вируса

... коварная маленькая программа приказывает сделать несколько копий самой себя, вызывая цепную реакцию и, таким образом, быстро истощая ресурсы системы ...

Поэтому рекомендуется не запускать это, это может привести к повреждению оборудования, так как это вызывает циклическое выполнение, может легко вызвать нагрев в ноутбуках.

Другая ссылка объясняет через скриншоты здесь .

0
ответ дан 13 April 2017 в 15:23

Эта команда является хорошо известной версией разветвленной бомбы

fork bomb pic from wikipedia

. Это приводит к тому, что вашему компьютеру не хватает памяти, когда он разветвляется процесс бесконечно. Существуют также некоторые меры предосторожности, которые вы можете использовать против него:

Системы Unix-типа обычно имеют ограничение по процессу, управляемое командой оболочки ulimit или ее преемником, setrlimit. Ядра Linux устанавливают и применяют ограничение RLIMIT_NPROC («ограничение ресурсов») процесса. Если процесс пытается выполнить ответвление, а пользователь, которому принадлежит этот процесс, уже владеет процессами RLIMIT_NPROC, тогда ответвление завершается ошибкой. Кроме того, в Linux или * BSD можно отредактировать файл конфигурации pam_limits /etc/security/limits.conf с тем же эффектом. Однако не во всех дистрибутивах Linux модуль pam_limits установлен по умолчанию.

0
ответ дан 13 April 2017 в 15:23

Это называют “ fork-бомба ”, как объяснено выше, и другой способ сделать, это должно было бы использовать фоновое выполнение вместо передачи по каналу:

:(){ :&:;};:
0
ответ дан 22 November 2019 в 22:39

Другие вопросы по тегам:

Похожие вопросы: