LINUX.ORG.RU
решено ФорумAdmin

Кончились дескрипторы. Можно починить без ребута?

 , , ,


0

2

Ребутать не хочу. Получилось залогиниться по ssh в голый bash, но на любые попытки вызывать внешний процесс пишет

-bash: fork: retry: Resource temporarily unavailable
Что делать? Можно на одних билтинах баша починить систему? echo 100000000000000 > /proc/sys/fs/file-max вроде как отрабатывает, но толку нет. Прочитать, сколько там было, тоже не осиливаю.

Всё, отбой, сделал.

echo f > /proc/sysrq-trigger
Moondancer
() автор топика

устанавливаешь в /etc/sysctl.conf нужное значение параметра fs.file-max, после чего выполняешь sysctl -p

Иначе у тебя после перегрузки всё повторится.

vinvlad ★★
()
Ответ на: комментарий от vinvlad

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

Moondancer
() автор топика
Ответ на: комментарий от anonymous

Ну вот да, там скорее тупо треды расплодились: один тред зависал, скрипт создавал следующий, не прибив толком предыдущий, и так далее, пока всё не сожрал.

Moondancer
() автор топика
Ответ на: комментарий от Moondancer

Ну страдай, если так хочешь :)

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

Если нужно прочитать одну строку из какого-то файла, то можно сделать так:

read f < /my/file && echo $f
Если нужно больше одной строки, то можно так:
for i in 0 1 2 3 4 5 6 7 8 9; do read f; echo $f; done < /my/file
Но нужно указывать кол-во строк.

Если это bash, а не огрызок sh, то там есть автодополнение, с которым можно делать полезные вещи, типа:

$ ls /proc/
Display all 265 possibilities? (y or n)
Так можно потвердить, действительно ли проблемы из-за нехватки PIDов.

Ну и напоследок есть exec, который шелл выполнит без форка. После отработки команды шелл, как и следует ожидать, исчезнет. Для твоего случая подойдет exec killall bash

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.