Возможный дубликат:
Что означает эта загадочная команда bash?
Почему эта команда вылетает в Linux?
:(){ :|:& };:
Возможный дубликат:
Что означает эта загадочная команда bash?
Почему эта команда вылетает в Linux?
:(){ :|:& };:
Команда определяет функцию с именем :
которая при вызове порождает две свои копии в фоновом режиме и завершает работу. Эти две копии делают то же самое, что приводит к огромному количеству процессов за одну секунду, продолжающихся бесконечно.
Ниже приведена точно такая же функция, но с более читаемым именем:
foo() {
foo | foo &
}
foo
Это называется вилочной бомбой.
Он разветвляет процессы на задний план бесконечно. Через некоторое время происходит слишком много процессов, каждый из которых потребляет небольшое количество системных ресурсов.
Технически говоря система не сломалась. Сбой системы приводит к выходу с ошибками. Он также не повесился. Это будет означать, что система что-то делает и не вернулась. В конкретном случае это работает правильно. Просто требуется слишком много времени, чтобы ответить, потому что компьютерная реализация имеет ограниченные ресурсы. Следовательно, бесконечные процессы и ограниченные ресурсы приводят к бесконечному времени для ответа.