Что лучший способ состоит в том, чтобы очистить после fork-бомбы?

Мне нравится растущая тенденция за неосуществимые IP-адреса в вещах как "24", где по крайней мере один из октетов> 255. По-видимому, это - TCP/IP, эквивалентный из 555 номеров телефона, но я не знаю то, что было неправильным с любым из трех совершенно хороших частных диапазонов адресов, что мы уже имеем. Говорящий 24, интересно, как Bruce Schneier чувствует об одном из его алгоритмов шифрования, по-видимому, имеющих черный ход в нем.

И да, неразрывную связь от ноутбука Jeff Goldblum до mothership в Дне независимости было немного трудно взять. Хотя... Причем AppleTalk имеет посторонний источник? Имеет большой смысл.

21
задан 31 October 2017 в 22:52
4 ответа

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

Тем путем отдельный пользователь исчерпает их квоту процесса задолго до того, как системный предел достигнут.

10
ответ дан 2 December 2019 в 20:06

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

Если это не работает, Вы могли бы попытаться работать kill -STOP -2 как базируются для замораживания всех процессов, работающих как любой пользователь кроме корня. Если это работает, можно затем использовать kill -CONT <pid> размораживать некоторые известные процессы, которые не связаны с fork-бомбой и уничтожают их, чтобы устранить полную проблему таблицы процессов и дать Вам некоторую комнату дыхания, чтобы разыскать и уничтожить первоисточник проблемы. Sendmail был бы хорошим примером системного процесса для уничтожения, поскольку будет легко определить при помощи .pid файла для идентификации pid. Например, kill -CONT $(< /var/run/sendmail.pid); kill $(< /var/run/sendmail.pid).

6
ответ дан 2 December 2019 в 20:06
  • 1
    Что ОС делают Вы видите "-2" опция для уничтожения? Я don' t видят его в странице справочника на Linux. –  raldi 8 October 2008 в 06:36
  • 2
    Это должно работать в большей части OS' s, поскольку Вы указываете отрицательную величину для pid. Если < pid> меньше чем-1, затем уничтожение отправляется в каждый процесс в группе процесса-< pid>. при отправке сигнала ОСТАНОВКИ к pid-2 это должно остановить все процессы, которые не являются специальными системными процессами или корневыми процессами. –   8 October 2008 в 07:00
  • 3
    Посмотрите уничтожение (2) страница справочника для уничтожения " отрицательный pid" но я все еще don' t полагают, что это работает. Почему все процессы non-init были бы в группе 2? Я понимаю это you' d нравится избегать init, так как результаты остановки его являются часто довольно фатальными, но... –  ephemient 9 October 2008 в 20:12
  • 4
    @ephemient, 2 является слишком низким, чтобы быть идентификатором группы процесса поэтому, возможно, it' s другое специальное значение. –  joshudson 11 March 2010 в 22:07
  • 5
    @Joshua Там не являются никакими специальными значениями около 0 и -1, согласно opengroup.org/onlinepubs/009695399/functions/kill.html opengroup.org/onlinepubs/000095399/utilities/kill.html –  ephemient 11 March 2010 в 23:59

Не уверенный, как Вы могли даже отправить Стоповый сигнал, начиная с порождения kill потребовал бы доступного дескриптора процесса. Кроме того, по моему опыту, системы становятся перегруженными и неприменимыми задолго до исчерпывания процессов.

Вы рассмотрели просто осуществляющие пределы процесса в расчете на пользователя с ulimit? Это препятствовало бы тому, чтобы Ваши пользователи запустили fork-бомбы (случайно или не).

3
ответ дан 2 December 2019 в 20:06
  • 1
    уничтожение является встроенной оболочкой, по крайней мере, в ударе. –  raldi 8 October 2008 в 01:28
  • 2
    Я думаю that' s ключевой компонент - определяют builtins для Вашей предпочтительной оболочки. –   8 October 2008 в 01:55
  • 3
    Если it' s не встроенное можно выполнить " должностное лицо уничтожает PID" который doesn' t ветвление. Но it' s опасный с тех пор, если это doesn' t работа, Вы не можете получать другую оболочку. Думайте о нем как о подходе жала пчелы к системному администрированию! –  Stephen Darlington 18 February 2009 в 13:03

Некоторые системы BSD имеют способность зарезервировать последние приблизительно 5 процессов для корня. Возможно, Ваша система имеет ту способность.

2
ответ дан 2 December 2019 в 20:06
  • 1
    Как Вы на самом деле настраиваете систему, чтобы сделать это? –  Nik Reiman 18 February 2009 в 13:03

Теги

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