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

时间:2017-08-21 14:27:30

标签: git terminal git-bash

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

目前我只有2人。

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

任何帮助将不胜感激!

附图:

enter image description here

31 个答案:

答案 0 :(得分:48)

在此处找到类似问题和潜在解决方案:https://groups.google.com/forum/#!topic/git-for-windows/EO27WWvHx64

  

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

     

看起来我在我的git bash shell中创建的ssh连接没有被关闭,当那些窗口被关闭并挂起可用的git bash shell窗口时。

     

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

     

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

答案 1 :(得分:42)

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

答案 2 :(得分:16)

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

code .

然后关闭终端。

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

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

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

答案 3 :(得分:14)

我通过解决方法解决了这个问题:

  1. 关闭Git Bash窗口。
  2. 打开任务管理器。
  3. 找到适用于Windows的Git'过程
  4. 杀了它。
  5. 打开Git Bash。
  6. 现在应该没问题。

答案 4 :(得分:5)

重新启动你的机器。

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

答案 5 :(得分:5)

为使生活更轻松(此问题经常发生),请在主目录中创建一个名为fixbash.bat的文件并将其粘贴:

taskkill /F /IM ssh-agent.exe

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

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

答案 6 :(得分:4)

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

答案 7 :(得分:4)

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

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

答案 8 :(得分:4)

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

$ tasklist

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

$ taskkill /F /IM bash.exe 

答案 9 :(得分:3)

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

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

taskkill /f /im chromedriver_2.34.exe

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

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

在没有关闭自动/测试驱动的浏览器的情况下,量角器退出后,这个问题变得更糟(由于我还不了解一个单独的问题。)当然,很多chromedriver个任务仍然存在跑步,这就是杀死他们的原因。

答案 10 :(得分:3)

似乎确实与git bash启动的过程有关,就像@mamacdon在他对@Scott Newson的最佳答案的评论中所建议的那样。

对我来说,如果我使用code从bash启动了vscode,并且在原始bash仍在运行的情况下,此vscode实例启动了集成的git终端,则出现了问题。

该终端是在启动时启动还是在以后启动都没有关系,只要原始bash仍在运行即可。

在打开集成终端之前关闭bash时没有发生。没有区分exit和通过Windows关闭bash。另一个旧的bash窗口仍在运行没有发生。

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

如果遇到此错误,请记住自己从bash启动的内容并杀死它。如果其他答案对您有用,则可能仅仅是这些由bash启动或由您从bash启动的进程启动的东西,并且它们某种程度上让您成为了原始bash的孩子。

答案 11 :(得分:2)

打开任务管理器,搜索" sh"促成并杀死他们。 祝你好运

答案 12 :(得分:2)

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

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

答案 13 :(得分:2)

如果您使用的是Visual Studio Code,则找不到ssh-agent.exe或无法对其执行任务杀伤,并且在打开Git Bash之后会收到该错误,只需转到VSCode,打开Terminal> New Terminal,然后按垃圾桶图标(“杀死终端”)。例如(1:bash)如果您有多个,则将其全部杀死,您应该会很好。

答案 14 :(得分:2)

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

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

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

它产生一个新的过程。

如果您不退出窗口而只是关闭窗口,则该过程仍在运行。因此打开的每个新bash都会不断添加新bash,而不会丢弃旧bash。

使用bash窗口完成操作后,只需按ctrl+d或键入exit即可终止代理进程,并且不应用完分叉。

答案 15 :(得分:1)

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

答案 16 :(得分:1)

在更新版本的git for windows中,在任务管理器中杀死的过程是" GitExtensions.exe"。杀了这个,终端重新启动没有问题。

答案 17 :(得分:1)

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

答案 18 :(得分:1)

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

答案 19 :(得分:0)

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

答案 20 :(得分:0)

对于Windows,请在任务管理器中杀死sh.exe。

答案 21 :(得分:0)

就我而言,我有一个杂散的abd.exe仍在任务管理器中打开。杀死它可以解决问题。

答案 22 :(得分:0)

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

答案 23 :(得分:0)

就我而言,问题出在文件 [git_install_dir]/etc/nsswitch.conf

我之前按照此处给出的说明进行操作: https://cygwin.com/faq.html#faq.using.startup-slow。 但这反而导致了“无法分叉”错误。 我错误的 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

答案 24 :(得分:0)

Windows 10对我有用:

1)以管理员身份打开cmd

2)类型:

taskkill /f /im git-bash.exe


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

类型:

tasklist

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

taskkill /f /im ***.exe

答案 25 :(得分:0)

通过关闭所有打开的命令行窗口来解决此问题。

答案 26 :(得分:0)

我发现在任务管理器中杀死msys2终端解决了这个问题

答案 27 :(得分:-1)

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

答案 28 :(得分:-2)

只需重新启动计算机,即可在重新启动计算机的同时解决此问题。

答案 29 :(得分:-2)

在系统bash中输入:

ps

杀死任何看起来不好的过程:

kill -9 <ID>

为我工作。

答案 30 :(得分:-3)

当代码和gitbash同时运行时,并且在关闭它后又想打开gitbash时,遇到了这个问题。

我关闭了代码并打开gitbash,成功了。