Я использую Ubuntu 12.04, и у меня возникла серьезная проблема. Сегодня, два раза, одна из моих открытых сессий gnome-терминала была заблокирована и напечатала ошибку
pipe: too many open files
Я понимаю, что это, вероятно, связано с моим лимитом пользователя, показанным с помощью ulimit -n
который, кстати, равен 1024. Проблема в том, что, как только это произойдет, я могу принудительно завершить работу терминала, вызывающего сбой, но тогда я не смогу открыть ничего, что сгенерирует новый PID. Например, я не могу использовать xkill
чтобы убить что-либо, я не могу открыть другой терминал, чтобы посмотреть сверху, я не могу запустить shutdown, я не могу зайти только на консоль и войти в систему. Нажав на любую ссылку, которая должна открыть окно X, вы получите новое окно, которое говорит:
There was an error launching the application.
Details: Failed to fork (Cannot allocate memory)
Это та же ошибка, что и при попытке войти в систему после нажатия клавиш Ctrl+Alt+F1. Из-за того, что я полностью застрял в этой точке, я вынужден перегрузить свою машину. Это делает его чрезвычайно сложным для отладки.
Могу ли я что-нибудь сделать, чтобы восстановить эту ошибку? Как мне найти отслеживание ошибки?
И последнее замечание: у меня не было смешного количества вещей: два терминала, один с сеансом byobu с двумя вкладками, один с сеансом Python; один экземпляр emacs, один Google Chrome и несколько узлов ROS (операционная система робота).
РЕДАКТИРОВАТЬ
Нажатие Ctrl+Alt+Backspace для перезапуска диспетчера дисплеев позволило мне снова войти в систему и начать открывать терминал. Использование ps
показало, что все еще было много запущенных процессов, которые работали с блокировкой. По крайней мере, это позволяет мне перезагрузить компьютер из программного обеспечения. Как мне поступить, чтобы определить причину этой проблемы?
РЕДАКТИРОВАТЬ 2
Я просто открыл два терминала, которые я только что отложил, и стал ждать сбоя. Как только это произошло, я смог сделать снимок экрана с выводом top
. Не знаю, будет ли вывод особенно полезным, но я приложил его. Единственное, что я заметил, было особенно странно, что было 5 процессов зомби.