Подтвердить что ты не робот

Получение странного поведения от терминала и 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

продолжает перечислять несколько сотен раз в терминале (не мог опубликовать его все, потому что он, вероятно, не поместился бы в этот квадрат, и он просто продолжает идти так же), поэтому я предполагаю, что что-то отрывочное происходит с этим файл. Кто-нибудь знает, как это исправить?

4b9b3361

Ответ 1

bash - и все остальные оболочки - используйте системный вызов fork в Unix-системах, чтобы фактически создать процесс, который вы хотите запустить из оболочки. В этом случае bash сообщает вам, что системный вызов завершен с помощью Resource temporarily unavailable, что соответствует значению errno 11, которое равно EAGAIN.

На странице руководства для fork указано, что он может установить errno в EAGAIN, когда:

  • Он не может выделить достаточную память для копирования таблиц родительской страницы и распределения структуры задачи для дочернего элемента.
  • Не удалось создать новый процесс, потому что был найден предел ресурса вызывающего RLIMIT_NPROC. Чтобы превзойти этот предел, процесс должен иметь либо возможность CAP_SYS_ADMIN, либо CAP_SYS_RESOURCE.

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

Ответ 3

Чтобы разрешить использование Yosemite и более новых версий Mac OS, используйте https://superuser.com/a/838630. Я смог решить, обновив файлы plist и перезагрузив - команды ulimit не нужны.