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


190

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

目前我只有2个。

我之前从未见过此错误,而且我也不了解是什么原因引起的。

任何帮助,将不胜感激!

附图片:

在此处输入图片说明


10
杀死bash进程对我有用。
bfranzen

35
-1为所有当前答案。“只是杀死终端然后重新开始”的所有变体。潜在的问题是什么?为什么不能有100个终端?
RJFalconer

31
我有这个问题,对于这样的时间长,从来没有能够得到它的底部。似乎是那些处于打开状态的应用程序可能导致某些句柄保持打开状态,但是在我的情况下,bash进程已关闭,并且周围没有ssh进程(我正在使用mosh)。通过使用以下命令启动vscode vscode .,然后关闭用于打开它的终端,我已经能够复制问题。当vscode窗口保持打开状态时,似乎Cygwin不想打开更多终端,而一旦我关闭它,它就会起作用。
Elven Spellmaker

25
@ElvenSpellmaker你是对的,code .在我看来也是这样。
Bilal Khoukhi,

15
只是为了确认:今天遇到的问题,也是由于code .我的原因。关闭VS Code可以解决此问题。很棒的发现@ElvenSpellmaker
kb。

Answers:


83

Google网上论坛中发现了类似的问题和解决方案

我打开Windows命令提示符并运行命令

$ tasklist

看起来我在git bash外壳中建立的ssh连接在关闭那些窗口并挂起可用的git bash外壳窗口时并未关闭。

这可能是一个危险的解决方案,但是从Windows命令提示符下运行

$ taskkill /F /IM ssh.exe 

此后,一切似乎都在重新工作。它可能不直接是孤立过程的问题,但这至少对我有用。

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

$ taskkill /F /IM vim.exe

6
尽管在我的案例中罪魁祸首是node.exe(Node.js)和link.exe(GNU链接),但此过程仍然有效。因此,您可能必须在任务列表中搜寻有罪的程序。我不确定为什么,但是从Bash会话内部启动的程序似乎可以以某种方式使它们的父Shell失效。
mamacdon

1
谢谢斯科特,这个程序由@mamacdon提到,即使在我的案例中,罪魁祸首是node.exe。
S52

21
对我来说,我必须执行“ taskkill / F / IM ssh-agent.exe”,但必须足够接近才能进行投票。
Dylan Kapp

12
我不得不使用以下命令杀死node.exetaskkill /F /IM node.exe
Tarator

1
以我为例(对于Cygwin),它是一个仍在运行的adb.exe。杀死它解决了。
Diego Andrade

58

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


4
最初这有效。现在即使杀死ssh-agent.exe,我仍然可以得到它。
Leo

1
这是一个短期解决方案。问题最终会再次出现。希望有一种更永久的方法来解决此问题
Sonic Soul

1
我还发现Node有时也保持运行状态,只是杀死看来对我来说解决了这个问题。
MusicDev

杀死进程“ sh.exe”后,问题得以解决。谢谢大家
maris

杀死“ winpty-agent.exe”对我有用。
6

47

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

code .

然后关闭终端。

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

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

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


4
谢谢,我也
遇到

1
像魅力一样工作!谢谢!
jrend

1
有同样的问题。应该只在cmd中打开vs代码。
理查德

完全一样的问题。谢谢。
路西安(Lucien Lu)

完全一样的问题。还是谢谢你。
阿马尔深

33

我通过一种解决方法解决此问题:

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

现在应该可以了。


3
最简单的解决方案。如此简单。
JkAlombro

2
就我而言,我运行了bash.exe,然后将其杀死。
吉尔伯托·阿尔比诺19'Sep

8

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

taskkill /F /IM ssh-agent.exe

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

要么

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


2
返回:ERROR: The process "ssh-agent.exe" not found.
Jesse Reza Khorasanee

这个解决方案对我有用。但是,您必须转到任务管理器并杀死所有ssh-agent.exe,因为可能有很多
Java Main

6

重新启动机器。

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


3
如果那行不通,请重新安装计算机或购买新计算机。
john16384

6

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

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

taskkill /f /im chromedriver_2.34.exe

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

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

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


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

6

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


6

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

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

2
就我而言adb shell。所以我adb kill-server在一个已经打开的窗口中运行,它为我解决了这个问题。+1
lucidbrot

工作了 但是到底是什么...几个月来我还没有完成任何node.js...。为什么运行?
JMI MADISON

5

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

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

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

它产生了一个新的过程。

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

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


3

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

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

不管该终端是在启动时启动还是在晚些时候启动,只要原始bash仍在运行即可。

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

处理它的方法是我用以下命令关闭vscode中的终端 exit或“杀死终端”终端(请注意不要将其与“关闭窗格”混淆),或者当然要关闭vscode本身。

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


3

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


3

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

$ tasklist

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

$ taskkill /F /IM bash.exe 


2

就我而言,解决方案是关闭Visual Studio代码-在该位置我也正在运行控制台而没有注意到-

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



1

在Windows的较新版本git上,在任务管理器中终止的进程为“ GitExtensions.exe”。杀死了那个,终端没有问题地重启了。



1

以我为例,我运行了Visual Studio代码,并关闭它可以解决问题。


1
不知道为什么这会被拒绝,对我有用。而且,Visual Studio代码可以具有生成终端,因此它可以影响此问题也就不足为奇了。
杰西·雷扎


0

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


0

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


0

Windows 10对我有用:

1)以管理员身份打开cmd

2)类型:

taskkill /f /im git-bash.exe


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

类型:

tasklist

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

taskkill /f /im ***.exe


0

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



-1

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


4
“如果不起作用,请尝试切断建筑物的电源,然后再插回电源。如果不起作用,请尝试致电当地的电力公司,并要求他们切断整个社区的电源,以降低能耗。片刻...等等”
refaelio

1
大声笑我做了同样的事情,解决方案听起来很傻,但它工作得很好:)
zeroDivider
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.