Как я могу избавиться от fork-бомбы?

Я попробовал код fork-бомбы:

:(){:|:&};:

и закрытый PuTTy. Теперь это не принимает новые соединения (Атака "отказ в обслуживании").

Как я могу восстановиться с этого?

1
задан 25 August 2015 в 13:01

4 ответа

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

Принятие у Вас есть консольный доступ, Вы могли бы попытаться получить идентификатор группы процесса (PGID) и уничтожить это с:

kill -- -PGID

Или использование SIGKILL вместо SIGTERM:

kill -9 -- -PGID

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

Эта мертвая блокировка может произойти, когда у Вас нет достаточного предела на количество процессов, пользователь или группа могут владеть, , таким образом, лучше установить нижний предел прежде, чем попробовать что-то разрушительное как fork-бомба.

3
ответ дан 3 December 2019 в 06:32

Вы использовали классическую "fork-бомбу" для израсходования всех процессов системы, и теперь Ваш не может заставить систему выполнять процесс, чтобы помочь Вам (и все команды, программы, и т.д. потребовать, чтобы процесс работал "в"). Любое вмешательство должно будет прийти не из системы (например, сбросить VM, циклически повторить питание, CtrlAltDelete). Разве Вы не поняли то, что затем кодирует, говорит?

:(){:|:&};:

:()  

Определяют функцию оболочки, вызванную ":".

   {

Начинают определение функции, которая является:

      :

Вызов ":" функция.

       |  

Канал вывод ":"

        :  

к другому вызову к ":"

         &

Разветвляют процесс для помещения конвейера (:|:) в фоновом режиме.

          } 

Конец определения функции ":"

           ;

Конец оператора оболочки, определяющего ":" функция

            : 

Вызов ":" функция для начала.

при выполнении кода, не понимая это Вы принимаете результаты кода.

3
ответ дан 3 December 2019 в 06:32

Если Вы не можете подключение снова, у Вас нет шанса. Возможно, можно ожидать out of memory error

, Если Вы можете подключение, попробовать команду ниже

pkill -f :
<час>

И как Вы сказали в своих комментариях

, я выполняю его в Сбросе поля

Virtual машина через VirtualBox.

0
ответ дан 3 December 2019 в 06:32

Согласно этому теоретически должно быть возможно использовать Alt+SysRq+f для избавления от форк-бомбы — хотя, опять же, возможно возможно только в том случае, если ядро ​​способно выделить достаточно памяти, чтобы убить его.

0
ответ дан 16 December 2020 в 14:37

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

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