16

当我打开 iTerm 时,我收到以下消息:

上次登录:10 月 22 日星期一 12:20:25 在 ttys002
-bash: fork: 资源暂时不可用
-bash-3.2$

当我打开终端时,我得到:

上次登录时间:10 月 22 日星期一 12:25:47 on ttys002
-bash: fork: 资源暂时不可用
Williams-MacBook-Pro:~ william$

每当我尝试输入命令时,例如 ls 或 cd 我都会收到以下错误消息:

-bash: fork: 资源暂时不可用

所以我基本上什么都做不了。我试过谷歌搜索错误消息,但没有得到任何地方。如果有帮助,我正在使用 Mountain Lion 的 Mac。谢谢。

编辑:

我跑了“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

一直在终端中列出几百次(无法全部发布,因为它可能不适合这个框,它只是保持不变),所以我猜那个文件有些粗略。有谁知道如何解决这一问题?

4

4 回答 4

7

bash- 以及所有其他 shell -fork在 Unix 系统上使用系统调用来实际创建要从 shell 启动的进程。在这种情况下,bash告诉您系统调用以 结束Resource temporarily unavailable,它转换为errno11 的值,等于EAGAIN

手册页fork说它可以设置errnoEAGAINwhen :

  • 它无法分配足够的内存来复制父级的页表并为子级分配任务结构。
  • RLIMIT_NPROC由于遇到调用者的资源限制,无法创建新进程。要超过此限制,该过程必须具有CAP_SYS_ADMINCAP_SYS_RESOURCE能力。

在这种情况下,我认为第一个原因听起来并不现实,除非您实际上内存不足,所以我想您一定已经达到了用户运行进程数的限制。

于 2012-10-22T11:49:54.860 回答
4

请参阅设置更高的进程数限制。

http://blog.ghostinthemachines.com/2010/01/19/mac-os-x-fork-resource-temporarily-unavailable/

于 2013-09-07T20:57:47.893 回答
1

对于 iTerm,打开一个新标签对我有用

于 2018-08-01T14:05:25.527 回答
1

要在 Yosemite 和更新版本的 Mac OS 上解决问题,请使用https://superuser.com/a/838630。我能够通过更新plist文件并重新启动来解决 - 这些ulimit命令是不必要的。

于 2017-05-09T16:29:04.207 回答