有时当我使用 Git 并且无法执行sudo
命令时,它会报告
fork: Resource temporarily unavailable
这意味着什么?我该怎么办?
答案1
此 fork 错误通常意味着父程序无法执行一个或多个子进程,因为已达到资源限制,要么是允许的最大进程数(错误EAGAIN
),要么是允许的最大内存量(ENOMEM
错误)。Fork(2) 的手册页显示:
Fork() will fail and no child process will be created if:
[EAGAIN] The system-imposed limit on the total number of processes under execution would
be exceeded. This limit is configuration-dependent.
[EAGAIN] The system-imposed limit MAXUPRC (<sys/param.h>) on the total number of pro-
cesses under execution by a single user would be exceeded.
[ENOMEM] There is insufficient swap space for the new process.
对 OS X 施加限制的方式有多种:
- 该命令设置的每个会话限制
ulimit
。您可以通过运行查看当前限制ulimit -a
并设置新限制,例如,ulimit -u 1000
将最大进程限制设置为 1000。此限制将一直保持到当前终端会话结束。 - 系统限制是使用 launchd 在文件中设置的
/Library/LaunchDaemons/limit.maxfiles.plist
(仅限 OS X 10.9+)。
有关详细信息,请参阅这个答案。