Bash ошибка fork (ресурс временно недоступен) не останавливается и продолжает отображаться каждый раз, когда я пытаюсь убить/перезагрузить

Я ошибочно использовал ограниченный сервер в качестве сервера iperf для 5000 параллельных соединений. (ограничение составляет 1024 процесса) Теперь каждый раз, когда я вхожу в систему, я вижу это:

-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable

Затем я пытаюсь их убить, но когда я делаю ps, я получаю следующее:

-bash-4.1$ ps
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable

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

-bash-4.1$ sudo reboot
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
-bash-4.1$ 

Так что в принципе я ничего не могу сделать. все команды получают эту ошибку:/ Однако я могу "выйти".

Это сервер за пределами площадки, к которому у меня нет физического доступа, поэтому я не могу отключить его/физически.

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

Ответ 1

Учитывая, что вы можете войти в систему, вы можете попробовать использовать exec для выполнения всех ваших команд. После выполнения exec вам придется снова войти в систему, так как exec убьет вашу оболочку (заменив ее командой, которую вы запустили).

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

Ответ 2

У меня была такая же проблема в последнее время. В моем случае причина заключалась в том, что был код, который выполнялся в моей собственности и потреблял почти все ресурсы, не оставляющие ничего для моих команд. Вот что я сделал, "exec top" для идентификации PID, потребляющего максимальные ресурсы "exec kill -9" убивает PID, идентифицированный вышеуказанной командой.

После убийства PID все вернулось к норме, и я смог войти в систему.