Git bash Error: Could not fork child process: There are no available terminals (-1)

Git bash Error: Could not fork child process: There are no available terminals (-1)

我之前最多同时拥有 8 个 git bash 个终端 运行。

目前我只有2张。

我以前没有见过这个错误,我不明白是什么导致了它。

如有任何帮助,我们将不胜感激!

附上图片:

google groups

中发现了类似的问题和解决方案

I opened a windows command prompt and ran the command

$ tasklist

It looks as though the ssh connections I had made in my git bash shells weren't being closed when those windows were closed and were hanging the available git bash shell windows.

This may be a dangerous solution but from the windows command prompt I ran

$ taskkill /F /IM ssh.exe 

Everything appears to be working again after this. It may not have directly been an issue of orphan processes, but this worked for at least for me.

补充说明:您还可以终止其他进程,例如:

$ taskkill /F /IM vim.exe

我在 git bash 中的 windows 上看到了问题,当时我在没有使用退出的情况下关闭 git bash 控制台。我发现从 windows 任务管理器中删除 ssh-agent.exe 任务可以解决问题。

重新安装git,现在工作正常。

我发现在任务管理器中关闭 msys2 终端可以解决问题

重启你的机器。

(其他答案对我不起作用。(我没有尝试重新安装。重新启动可能更快。))

对于我(或任何 运行 量角器,它可能会启动一个独立的 Selenium/WebDriver 服务器),我需要 taskkill 特定的 webdriver 这是 运行 我的测试。

换个说法: 或者您的 chromedriver 版本 可能会有所不同

taskkill /f /im chromedriver_2.34.exe

请注意您的驱动程序可能会有所不同: IEDriverServer*.*.*.exe 对比 chromedriver_*.**exe

您的驱动程序可能 版本 可能不同:chromedriver_2.34.exe vs chromedriver_2.33.exe

这个问题在量角器 没有关闭自动/测试驱动的浏览器就退出后变得更糟,(由于一个单独的问题我还不明白。)自然很多 chromedriver 任务仍然存在 运行,这就是杀死它们的原因。

我试图在任务管理器中关闭所有 git 终端解决了这个问题。 这对我也有用。 祝你好运。

我用解决方法解决了这个问题:

  1. 关闭 Git Bash window.
  2. 打开任务管理器。
  3. 找到 'Git for Windows' 进程。
  4. 杀了它。
  5. 打开 Git Bash。

现在应该可以了

打开您的任务管理器,搜索 "sh" 进程并终止它们。 祝你好运

在 windows 的更新版本 git 中,要在任务管理器中终止的进程是 "GitExtensions.exe"。杀死它,终端重新启动没有问题。

请在任务管理器中找到ssh-agent进程window。 停止或终止 ssh-agent 进程后,错误将消失。

打开任务管理器并终止名称为 bash 的进程,这对我有用。

为了让生活更轻松(这个问题经常发生)在主目录中创建一个名为 fixbash.bat 的文件并粘贴:

taskkill /F /IM ssh-agent.exe

出现问题时,只需打开 cmd 并输入 fixbash.bat 即可解决问题。

如果您不想创建脚本,只需将 taskkill 命令粘贴到您的 cmd

打开任务管理器,找到bash.exe进程并杀死它。对我的情况有帮助。

在我的例子中,我有 visual studio 代码 运行 并关闭它解决了问题。

似乎是从 git bash 启动的进程确实存在问题,就像@mamacdon 在他对@Scott Newson 的最佳答案的评论中建议的那样。

对我来说,如果我使用 code 从 bash 启动 vscode,并且如果 vscode 的这个实例启动集成 git 终端,而原来的 bash 仍然是 运行。

无论该终端是在开始时启动还是稍后启动都没有关系,只要它是在原始 bash 仍处于 运行 时启动即可。

在打开集成终端之前关闭 bash 时没有发生。没有区分 exit 和通过 windows 关闭 bash。没有发生在另一个年长的 bash window 仍然 运行.

我的处理方法是用 exit 或 'Kill Terminal' 关闭 vscode 中的终端(注意不要与 'close pane' 混淆) ),或者当然,关闭 vscode 本身。

如果出现此错误,请尝试记住从 bash 启动的内容并将其终止。如果其他答案对您有用,那可能只是这些东西是由您的 bash 启动的,或者是由您从 bash 启动的进程启动的,并且它们以某种方式得到了您原始 [=28] 的子项=].

当您退出 git bash 而不终止现有进程时,会发生这种情况。只需尝试终止您从 git bash 启动的那些进程。 我是 git bash 里面的 运行 节点进程,所以我杀死了所有节点进程 击杀步骤

  1. 打开任务管理器
  2. 转到详细信息选项卡
  3. 寻找node.exe(你寻找你的进程)
  4. 杀死每个节点进程
  5. 再次打开GitBash

如果您使用的是 Visual Studio 代码,但找不到 ssh-agent.exe 或无法将其 taskkill,在打开 Git Bash 后,您会得到错误,只需转到 VSCode 打开终端 > 新终端,然后按垃圾桶图标(杀死终端)。例如 (1:bash) 如果你有多个那么就把它们全部杀了你应该很好。

终于弄清楚是什么原因造成的。

如果我们使用这样的代码(显式或隐式),即在 .bashrc 文件中

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

它产生了一个新进程。

如果您不退出它而只是关闭 window,该过程仍在 运行ning。所以每个新 bash 打开只是不断添加新的 w/out 处理旧的。

完成 bash window 后,只需点击 ctrl+d 或键入 exit 即可终止代理进程,您不应该 运行叉子。

在系统 bash 中输入:

ps

杀死所有外观不佳的进程:

kill -9 <ID>

对我有用。

只需重新启动您的机器,在重新启动我们的机器时,此问题已解决,请尝试。

Windows 10 这对我有用:

1) 以管理员身份打开cmd

2) 输入:

taskkill /f /im git-bash.exe


3) 如果出现错误:找不到进程 "ssh-agent.exe"。然后:

类型:

tasklist

4) 查找并杀死每个带有 "bash" 或 "git" 的进程(这可能是一个危险的解决方案,但是一旦找到进程名称,下次您就会知道。)

taskkill /f /im ***.exe

就我而言,它与使用 VS 代码有关。以前我使用 git bash 终端打开 VS 代码并执行

code .

然后关闭终端。

关闭所有打开的VS代码windows问题解决

当您有任何编辑器或 IDE 配置以 git bash 打开终端时,当 IDE/IDE 为 运行 时,git bash 将从 "C:\Windows\System32\bash.exe" 旋转 bash 并且任何其他尝试从单独的 window 打开 bash 都可能会崩溃。

最佳解决方案是终止 IDE/Editor bash 并从新的 window 打开或从 IDE/Editor 命令继续。

我的情况是,解决方案是关闭 Visual Studio 代码 - 我也有控制台 运行 而没有注意到 -

关闭后一切恢复正常。 希望这对某人有所帮助。

对于 windows,在任务管理器中 kill sh.exe。

在我的案例中,我需要在 Windows 中杀死 Git bash。 所以在命令

下面打开命令提示符和 运行
$ tasklist

它将列出所有 运行 任务,然后需要使用以下命令终止 bash.exe 任务

$ taskkill /F /IM bash.exe 

在我的例子中,我有一个杂散的 abd.exe 仍然在任务管理器中打开。杀死它解决了这个问题。

就我而言,我需要杀死 sh.exe taskkill /F /IM sh.exe

在我的例子中,问题是文件 [git_install_dir]/etc/nsswitch.conf

我之前按照此处给出的说明进行操作: https://cygwin.com/faq.html#faq.using.startup-slow。 但这反而导致了“Could not fork”错误。 我的错误 nsswitch.conf 文件是:

passwd: files
group: files

所以我恢复了文件,问题解决了。现在我的 [git_install_dir]/etc/nsswitch.conf 是:

passwd: files db
group: files # db
db_enum: cache builtin
db_home: env windows cygwin desc
db_shell: env windows # cygwin desc
db_gecos: env # cygwin desc

如果您打开了另一个 VS 代码的终端会话,只需将其关闭并重试,它将正常工作。

当我编辑 bash_profile 并重新启动 git bash.

时,我开始出现这个问题

我在 VS Code 中关闭终端会话后,问题得到解决。之后一切都按预期进行。

在我的例子中,我是 运行ning jupyter-notebook 来自 Git Bash 并在没有关闭笔记本的情况下关闭了终端。当我关闭所有 运行ning git bash 终端并尝试打开新终端时,这给了我错误:

Error: Could not fork child process: There are no available terminals (-1).

解决方案

taskkill /F /IM jupyter-notebook.exe

之后,我可以在 git bash 终端中 运行 命令。