Pull to refresh

Comments 28

No forking в данном контексте означает, что не выполняется системный вызов fork() для запуска других процессов. То есть, фактически, используются только built-in команды bash.

Что, если вы подключены к машине по ssh, вы находитесь в своей верной оболочке bash, но, к сожалению, вы не можете создавать никаких новых процессов, потому что буквально все другие pid заняты. Что делать?

Поубиваю процессы "лишние". Зачем они висят в системе? Да и зачем мне подключаться к системе в которой нельзя создать/запустит процесс?

Странный вопрос в целом.

А кстати, как вы будете убивать процессы? kill тоже не запустится же.

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

Если я вижу что в системе запущено 32k процесов - ну здесь точно уже всё плохо и первое что нужно сделать - отключить это от общей сети, чтобы вся эта малварь не перебралась дальше. Теоретически может частично помочь ребут, но данные на сервере можно начинать оплакивать и начинать менять все пароли, к которым этот сервер мог иметь доступ...

Если в системе кончились pid - то и запустить этот bash_ps_aux я тоже не смогу. А если и смогу - то простыня с выводом на 32к строк мне не сильно поможет.

Почему малварь? Малвари как раз совсем не нужно, чтобы вы её заметили. А вот ошибка в какой‐нибудь реализации пула процессов, не выявленная при тестировании — мне кажется, не менее вероятно, чем малварь. (Конечно, это может быть и малварь с ошибкой в реализации пула процессов.) bash_ps_aux в этом случае теоретически поможет — и, если вы как‐то всё‐таки смогли подключиться, то bash_ps_aux можно запустить, скопировав его код непосредственно в оболочку (с небольшими изменениями из‐за смены способа запуска).

А простыня на 32к строк не поможет, только если это 32к каких‐то случайных имён. Скорее всего, там будет много повторов, если не вообще 31к копий одного процесса — так что вы сможете понять, куда копать при расследовании.

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

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

Раньше, когда сервера были железными и подороже, вполне существовал способ - дефейснуть сайт, забить всё место на диске (чтобы логи не писались), занять все pid (чтобы админ не смог подключиться и прогнать). При ребуте - повторить.

Почему малварь? Малвари как раз совсем не нужно, чтобы вы её заметили.

(Глядя поверх очков): Эх, челодой моловек, поживёте с моё — осознаете Дао и поймёте, что и в малвари тоже бывают ошибки...

А кстати, как вы будете убивать процессы? kill тоже не запустится же.

манипуляции с /proc/$pid/oom_score_adj (слать значения до 1000) или oom_adj (до 15), и ядро само убьет процесс

Не силен в линуксе, но предполагал что всё что не делается(понятно что не "всё") в нём - пораждает процесс. Решил проверить.

Не знаю считается ли астра - каноничным линуксом или в ней всё не так, но... Подключившись по ssh увидел своё подключение + bash в списке процессов.

Сделав ещё одно подключение - увидел увеличение количества процессов и это подключение в списке.

Возникает вопрос. А о чём речь в статье тогда если количество процессов достигло предела и как бы подключение произвести не получится?

  1. Вы можете уже иметь активное подключение. Например, у меня в течение дня активны минимум три сессии к разным серверам.

  2. Это может быть не удалённый сервер, а локальный PC. Например, у меня убунта на ноуте.

  1. Или так совпало, что вы зашли, и число процессов достигло максимума как раз :)

Как гласит админская мудрость: 7 бед - 1 резет.

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

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

аптайм полиция выписывает вам штраф

Музыкой навеяло...

Hidden text

Жонглера останавливает полиция и находит полный багажник огромных острых ножей. "Я жонглер, выступаю в цирке с этими ножами", - объясняет он. Полиция просит доказать, и жонглер показывает свое искусство на обочине. В это время мимо проезжает мужик и думает: "Хорошо, что я бросил пить! Гляди, какой тест они выдумали!"

UFO landed and left these words here

Если все pid исчерпаны, то подключиться по ssh тоже не удастся, т.к. sshd делает fork на каждый конект.

А даже если удастся (допустим 1 pid доступен), то shell не запустится, т к нужен еще 1 pid, ну а если еще 1 pid доступен, то видимо не все так плохо.

У пользователя может быть активная сессия где-то в забытой вкладке терминала, ей и можно воспользоваться. Выдуманная ситуация перестаёт быть столь выдуманной, пару раз я встречался с исчерпанием PIDов, правда это было достаточно давно.

Оно же вызывает cat, sed и echo - это программы, для их запуска нужны новые процессы, так что по условию не подходит.

echo - давно встроенная, про sed/cat - да.

А я понял эта штука нужна , чтобы список запущенных процессов посмотреть и ненужные убить

список запущенных процессов посмотреть и ненужные убить

Задача со звёздочкой: как убить процесс, если нет возможности запустить kill (а задача "как посмотреть список процессов, если нет возможности запустить ps , как видим, успешно решена)

В наше время просто по имени не всегда можно угадать правильное обращение и местоимение ..

А если так? https://uk.linkedin.com/in/isabella-bosia-25ba60b4

Если все Pid кончились, то и в оболочку не попадёшь.

Sign up to leave a comment.

Other news