Git bash错误:无法fork子进程:没有可用的终端(-1)

A. *_*zza 147 git terminal git-bash

我之前同时运行了多达8个git bash终端.

目前我只有2个.

我之前没有看过这个错误,我不明白是什么导致它.

任何帮助,将不胜感激!

附图:

在此输入图像描述

Sco*_*son 66

发现了类似的问题和潜在的解决方案在这里:https://groups.google.com/forum/#!topic/git-for-windows/EO27WWvHx64

我不确定你们是否仍然有这个问题,但我找到了一个非常简单的解决方案,对我有用.我打开了一个Windows命令提示符并运行命令$ tasklist

看起来好像我已经在我的git的bash壳制成的ssh连接没有被当这些窗口被关闭了挂可用的git bash shell中关闭窗户和.

这可能是一个危险的解决方案,但从Windows命令提示符我运行$ taskkill/F/IM ssh.exe

在此之后,一切似乎都在恢复.它可能不会直接成为孤儿进程的问题,但这至少对我有用.祝好运!

  • 对我来说,我必须执行"taskkill/F/IM ssh-agent.exe",但足够接近以进行投票. (14认同)
  • 我不得不用命令`taskkill/F/IM node.exe`杀死node.exe (10认同)
  • 此方法操作,但在我的案件的元凶是`node.exe`(Node.js的)和'link.exe`(GNU链接).所以你可能不得不通过任务列表寻找有罪的过程.我不确定为什么,但看起来似乎从Bash会话内部启动的程序可以以某种方式超出他们的父shell. (4认同)
  • 谢谢斯科特,即使在我的案例中罪魁祸首是 node.exe,这个过程也能如@mamacdon 所提到的那样工作。 (2认同)

小智 49

当我在不使用exit的情况下杀死我的git bash控制台时,我在git bash中看到了windows上的问题.我发现从Windows任务管理器中杀死ssh-agent.exe任务来解决问题.

  • 这起初有效.现在我仍然得到它,即使在杀死ssh-agent.exe之后. (4认同)

Ret*_*ons 23

我解决了这个问题:

  1. 关闭Git Bash窗口.
  2. 打开任务管理器.
  3. 找到'Git for Windows'流程.
  4. 杀死它.
  5. 打开Git Bash.

现在应该没问题.

  • 最简单的解决方案。这么直截了当。 (3认同)
  • 就我而言,我运行了 bash.exe,然后将其杀死。 (2认同)

Fed*_*cia 12

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

code .
Run Code Online (Sandbox Code Playgroud)

然后关闭终端。

通过关闭所有打开的VS代码窗口,可以解决该问题。

当您将任何编辑器或IDE配置为以git bash的形式打开终端时,则在IDE / IDE运行时,git bash将从“ C:\ Windows \ System32 \ bash.exe”启动bash,并进行任何其他尝试从单独的窗口打开bash可能会崩溃。

最好的解决方案是杀死IDE / Editor bash,然后在新窗口中打开它,或者从IDE / Editor命令继续。

  • 谢谢,这和我有同样的问题 (5认同)

and*_*ies 7

重启你的机器.

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

  • 如果那行不通,请重新安装计算机或购买新计算机。 (2认同)

kli*_*mat 6

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

taskkill /F /IM ssh-agent.exe

出现问题时,只需打开cmd并键入fixbash.bat以解决问题.

要么

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

  • 返回:`错误:找不到进程“ssh-agent.exe”。` (2认同)

小智 6

就我而言,我需要在 Windows 中终止 Git bash。因此打开命令提示符并运行以下命令

$ tasklist
Run Code Online (Sandbox Code Playgroud)

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

$ taskkill /F /IM bash.exe 
Run Code Online (Sandbox Code Playgroud)


The*_*Pea 5

对于我(或任何运行量角器的人,可能会启动独立的Selenium / WebDriver服务器),我需要运行测试taskkill特定Webdriver

所以只是一个不同的论点:否则您的chromedriver 版本可能会有所不同

taskkill /f /im chromedriver_2.34.exe
Run Code Online (Sandbox Code Playgroud)

注意你的驱动程序可能会有所不同: IEDriverServer*.*.*.exeVSchromedriver_*.**exe

您的驱动程序版本可能会有所不同:chromedriver_2.34.exevschromedriver_2.33.exe

在量角器退出后没有关闭自动的/测试驱动的浏览器,这个问题变得更加严重(由于我尚不了解另一个独立的问题。)很自然,许多chromedriver任务仍在运行,这就是为什么要杀死它们。

  • 是的,这是我的问题。我有一个方便脚本,该脚本使用Selenium从某些网站上获取某些内容,这些网站由于必须处理JavaScript而无法使用curl和wget。无论如何,我通常每天早上运行一次,有时会挂断。在看到这篇文章之前,我从未与这个cygwin错误建立关联,所以谢谢!我将在退出前更新调用selenium杀死chromedriver.exe进程的脚本。 (2认同)

小智 5

打开任务管理器并使用bash名称杀死进程,这对我有用。


Ish*_*han 5

当您退出git bash而不终止现有进程时,会发生这种情况。只需尝试杀死从git bash开始的那些进程即可。我在git bash中运行节点进程,所以我杀死了所有节点进程。

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

  • 就我而言,它是“adb shell”。所以我在一个已经打开的窗口中运行了 `adb kill-server`,它为我解决了这个问题。+1 (2认同)

Son*_*oul 5

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

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

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

它产生了一个新的进程。

如果您不退出它而只是关闭窗口,则该进程仍在运行。所以每次打开的新 bash 都会不断添加新的 bash,而不处理旧的。

使用 bash 窗口完成后,只需点击ctrl+d或键入exit即可终止代理进程,并且不会用完叉子。