错误:无法 fork() 状态:资源暂时不可用(git)

错误:无法 fork() 状态:资源暂时不可用(git)

当我想在 github 中执行某些操作时:添加、删除、拉取、推送,我的终端中会出现此错误

提前致谢!

  selnaz:iOS-Tidinfo Lnaz$ git add .
  error: cannot fork() for status: Resource temporarily      unavailable
  fatal: Could not run git status --porcelain
  fatal: git status --porcelain failed
  fatal: git status --porcelain failed
  fatal: git status --porcelain failed
  fatal: git status --porcelain failed
  fatal: git status --porcelain failed
  fatal: git status --porcelain failed

编辑:

selnaz:iOS-Tidinfo Lnaz$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 256
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 709
virtual memory          (kbytes, -v) unlimited  

編輯2

selnaz:iOS-Tidinfo Lnaz$ ps xfu | wc -l
ps: illegal option -- f
usage: ps [-AaCcEefhjlMmrSTvwXx] [-O fmt | -o fmt] [-G gid[,gid...]]
      [-u]
      [-p pid[,pid...]] [-t tty[,tty...]] [-U user[,user...]]
   ps [-L]
   0

答案1

fork()仅当运行的进程过多时,系统调用才会失败(并出现该错误)。详情请参阅man 2 fork

重新启动应该可以解决问题。

我推测在调试 iOS 应用程序时可能有很多进程尚未完全退出。

运行下面一行将显示执行相同命令的三个最大进程数(以及有多少个进程正在运行这些命令),以指示哪个命令正在占用所有进程:

ps -efwww | awk '{print $8}' | sort | uniq -c | sort -n | tail -3

答案2

我刚刚遇到了这个问题。这是由于在跨磁盘复制 git 目录后,目录损坏造成的。Git 是相互分叉的小型 unix 工具的组合。运行 git status 导致 git 陷入无限递归的进程中,并达到我系统的进程限制(ulimit 中的“最大用户进程数”)。

在我的特定实例中,我有子模块,其中涉及硬链接回父 git 存储库,因此删除子模块并重新初始化解决了我的问题。

您也可以尝试在其他地方对您的存储库进行 git clone。

另一个更激进的选择是深入研究 .git 目录的副本并清理除包、对象和引用之外的所有内容。您可以在 git repo 恢复正常后将其复制回顶部以保留工作树。

祝你好运!

答案3

就我的情况而言,我在一个 shell 中使用 Vi 编辑一个 txt 文件,同时尝试在另一个 shell 中推送到 Github。退出 Vi 后,另一个 shell 就可以推送,而不会出现该错误。

相关内容