Получение странного поведения от терминала и iTerm "- bash: fork: ресурс временно недоступен"
Когда я открываю iTerm, я получаю это сообщение:
Последний вход: Пн Окт 22 12:20:25 на ttys002
- bash: fork: ресурс временно недоступен
- bash -3.2 $
и когда я открываю терминал, я получаю:
Последний вход: Пн Окт 22 12:25:47 на ttys002
- bash: fork: ресурс временно недоступен
Williams-MacBook-Pro: ~ william $
и всякий раз, когда я пытаюсь ввести команду, например ls или cd, я получаю это сообщение об ошибке:
- bash: fork: ресурс временно недоступен
Поэтому я в принципе ничего не могу сделать. Я пробовал приходить в сообщение об ошибке, но никуда не денусь. Я нахожусь на Mac с Mountain Lion, если это помогает. Спасибо.
ИЗМЕНИТЬ:
Я побежал "ps"
чтобы получить статус процесса, и я получил это как ответ от терминала:
Williams-MacBook-Pro: ~ william $ps
PID TTY TIME CMD
203 ttys000 0: 00.08 - bash
254 ttys001 0: 00.03 bash/Users/william/.rvm/scripts/wrapper ruby-1.9.3-p2
553 ttys001 0: 00.03 bash/Users/william/.rvm/scripts/wrapper ruby-1.9.3-p2
785 ttys001 0: 00.03 bash/Users/william/.rvm/scripts/wrapper ruby-1.9.3-p2
814 ttys001 0: 00.48 - bash
1019 ttys001 0: 00.03 bash/Users/william/.rvm/scripts/wrapper ruby-1.9.3-p2
и сообщение
bash/Users/william/.rvm/scripts/wrapper ruby-1.9.3-p2
продолжает перечислять несколько сотен раз в терминале (не мог опубликовать его все, потому что он, вероятно, не поместился бы в этот квадрат, и он просто продолжает идти так же), поэтому я предполагаю, что что-то отрывочное происходит с этим файл. Кто-нибудь знает, как это исправить?
Ответы
Ответ 1
bash
- и все остальные оболочки - используйте системный вызов fork
в Unix-системах, чтобы фактически создать процесс, который вы хотите запустить из оболочки. В этом случае bash
сообщает вам, что системный вызов завершен с помощью Resource temporarily unavailable
, что соответствует значению errno
11, которое равно EAGAIN
.
На странице руководства для fork
указано, что он может установить errno
в EAGAIN
, когда:
- Он не может выделить достаточную память для копирования таблиц родительской страницы и распределения структуры задачи для дочернего элемента.
- Не удалось создать новый процесс, потому что был найден предел ресурса вызывающего
RLIMIT_NPROC
. Чтобы превзойти этот предел, процесс должен иметь либо возможность CAP_SYS_ADMIN
, либо CAP_SYS_RESOURCE
.
В этом случае я думаю, что первая причина не очень реалистична, если вы на самом деле не в памяти, поэтому, я думаю, вы просто должны превзойти количество запущенных процессов для вашего пользователя.
Ответ 2
См. установление более высоких пределов количества процессов.
http://blog.ghostinthemachines.com/2010/01/19/mac-os-x-fork-resource-temporarily-unavailable/
Ответ 3
Чтобы разрешить использование Yosemite и более новых версий Mac OS, используйте https://superuser.com/a/838630. Я смог решить, обновив файлы plist
и перезагрузив - команды ulimit
не нужны.