Błąd Git bash: nie można rozwidlić procesu potomnego: brak dostępnych terminali (-1)


199

Wcześniej miałem do 8 terminali git bash działających w tym samym czasie.

Obecnie mam tylko 2 w górę.

Nie widziałem wcześniej tego błędu i nie rozumiem, co go powoduje.

Każda pomoc będzie mile widziana!

Zdjęcie w załączeniu:

wprowadź opis obrazu tutaj


11
zabijanie procesu bash zadziałało dla mnie.
bfranzen

38
-1 do wszystkich aktualnych odpowiedzi. Wszystkie odmiany „po prostu zabij terminal i zacznij od nowa”. Jaki jest podstawowy problem? Dlaczego nie mogę mieć 100 terminali?
RJFalconer,

32
Miałem ten problem przez tak długi czas i nigdy nie byłem w stanie dotrzeć do sedna. Wygląda na to, że aplikacje są pozostawione otwarte, co może spowodować, że niektóre uchwyty pozostaną otwarte, ale w moim przypadku procesy bash były zamykane i nie ma w pobliżu żadnych procesów ssh (używam mosh). Właśnie udało mi się odtworzyć problem, uruchamiając vscode za pomocą, vscode .a następnie zamykając terminal używany do jego otwierania. Podczas gdy okno vscode pozostaje otwarte, wygląda na to, że Cygwin nie chce otwierać więcej terminali, jak tylko je zamknę, działa.
Elven Spellmaker

25
@ElvenSpellmaker masz rację, dotyczy to również code .mojego przypadku.
Bilal Khoukhi,

15
Dla potwierdzenia: problem napotkany dzisiaj, był również spowodowany code .w moim przypadku. Zamknięcie VS Code rozwiązało problem. Świetne znalezisko @ElvenSpellmaker
kb.

Odpowiedzi:


88

Znalazłem podobny problem i rozwiązanie w grupach google

Otworzyłem wiersz polecenia systemu Windows i uruchomiłem polecenie

$ tasklist

Wygląda na to, że połączenia ssh, które utworzyłem w moich powłokach git bash, nie były zamykane, gdy te okna były zamknięte i zawieszały dostępne okna powłoki git bash.

Może to być niebezpieczne rozwiązanie, ale z wiersza poleceń systemu Windows uruchomiłem

$ taskkill /F /IM ssh.exe 

Wygląda na to, że po tym wszystko znów działa. Może nie była to bezpośrednio kwestia procesów osieroconych, ale przynajmniej w moim przypadku to zadziałało.

Dodatkowa uwaga: możesz także zabić inne procesy, na przykład:

$ taskkill /F /IM vim.exe

6
Ta procedura zadziałała, chociaż w moim przypadku winowajcami były node.exe(Node.js) i link.exe(GNU link). Być może będziesz musiał przeszukać listę zadań w poszukiwaniu winnych procesów. Nie jestem pewien dlaczego, ale wydaje się, że programy uruchamiane z sesji Bash mogą w jakiś sposób przeżyć swoją powłokę nadrzędną.
mamacdon

2
Dziękuję Scott, ta procedura zadziałała, jak wspomniał @mamacdon, nawet w moim przypadku winowajcą był node.exe.
S52

22
W moim przypadku musiałem wykonać polecenie „taskkill / F / IM ssh-agent.exe”, ale wystarczająco blisko, aby uzyskać pozytywny wynik.
Dylan Kapp

13
Musiałem zabić node.exe za pomocą poleceniataskkill /F /IM node.exe
Tarator

1
W moim przypadku (z Cygwin) był to pojedynczy plik adb.exe, który nadal działał. Zabijanie to rozwiązane.
Diego Andrade

62

Widzę problem w systemie Windows w git bash, gdy zabijam konsolę git bash bez użycia wyjścia. Znalazłem zabijanie zadania ssh-agent.exe z menedżera zadań systemu Windows, aby naprawić problem.


4
To działało początkowo. Teraz nadal to rozumiem, nawet po zabiciu ssh-agent.exe.
Leo

1
to jest rozwiązanie krótkoterminowe. problem w końcu powraca. mając nadzieję, że istnieje trwalszy sposób rozwiązania tego problemu
Sonic Soul

1
Odkryłem również, że Node czasami również działa, zabijając, co wydawało się rozwiązać problem za mnie.
MusicDev

po zabiciu procesu „sh.exe” problem został rozwiązany. Dziękuje wszystkim.
maris

59

W moim przypadku było to związane z wykorzystaniem kodu VS. Wcześniej otworzyłem kod VS za pomocą terminala git bash i wykonałem

code .

następnie zamknięcie terminala.

Problem można rozwiązać, zamykając wszystkie otwarte okna kodu VS.

Jeśli masz jakikolwiek edytor lub skonfigurowane IDE, aby otworzyć terminal jako git bash, wtedy gdy IDE / IDE jest uruchomione, git bash uruchomi bash z "C: \ Windows \ System32 \ bash.exe" i każda inna próba open bash z osobnego okna może się zawiesić.

Najlepszym rozwiązaniem jest zabicie IDE / Editor bash i otwarcie go z nowego okna lub kontynuowanie za pomocą polecenia IDE / Editor.


4
Dzięki, to był ten sam problem ze mną
Tarun Nagpal

1
Działał jak urok! Dzięki!
jrend

1
Miałem ten sam problem. Powinien po prostu otworzyć kod vs w cmd.
Richard

1
Dokładnie ten sam problem. Dzięki.
Lucien Lu

1
dokładnie ten sam problem. W każdym razie dziękuję.
amar deep

34

Rozwiązuję to za pomocą obejścia:

  1. Zamknij okno Git Bash.
  2. Otwórz Menedżera zadań.
  3. Znajdź proces „Git dla Windows”.
  4. Zabij to.
  5. Otwórz Git Bash.

Teraz powinno być dobrze.


3
najłatwiejsze rozwiązanie. Tak proste.
JkAlombro

2
W moim przypadku miałem uruchomiony bash.exe i po prostu go zabij.
Gilberto Albino

Mogłaby być dla mnie najlepszą odpowiedzią, ale już uruchomiłem ponownie WindOwS, co rozwiązało problem.
Henke

8

Dla ułatwienia życia (ten problem zdarza się dość często) utwórz plik o nazwie fixbash.batw katalogu domowym i wklej to:

taskkill /F /IM ssh-agent.exe

Gdy wystąpi problem, po prostu otwórz cmdi wpisz, fixbash.bataby rozwiązać problem.

Lub

Po prostu wklej polecenie taskkill do swojego, cmdjeśli nie chcesz tworzyć skryptu.


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

To rozwiązanie zadziałało dla mnie. Musisz jednak przejść do menedżera zadań i zabić wszystkie pliki ssh-agent.exe, ponieważ może ich być wiele
Java Main

7

Uruchom ponownie komputer.

(Inne odpowiedzi nie pomogły. (Nie próbowałem ponownej instalacji. Ponowne uruchomienie jest prawdopodobnie szybsze).)


4
A jeśli to nie zadziała, zainstaluj ponownie komputer lub kup nowy.
john16384

6

Dla mnie (lub ktokolwiek z systemem kątomierz, które mogą rozpędzać się samodzielnym selen / serwer WebDriver), musiałem taskkillna webdriver konkretnej który był uruchomiony w moich testów.

Więc tylko inny argument: lub twoja wersja chromedriver może się różnić

taskkill /f /im chromedriver_2.34.exe

Uwaga: Twój sterownik może się różnić: IEDriverServer*.*.*.exevschromedriver_*.**exe

Wersja twojego sterownika może się różnić: chromedriver_2.34.exevschromedriver_2.33.exe

Ten problem pogorszył się po zamknięciu kątomierza bez zamykania przeglądarki automatycznej / testowej (z powodu osobnego problemu, którego jeszcze nie rozumiem). Oczywiście wiele chromedriverzadań pozostaje uruchomionych, dlatego je zabij.


3
Tak, to był mój problem. Mam wygodny skrypt, który używa Selenium do pobierania niektórych rzeczy z niektórych stron internetowych, gdzie curl i wget nie mogą być używane z powodu konieczności przetwarzania JavaScript. W każdym razie, zwykle uruchamiam to raz rano i czasami się rozłącza. Nigdy nie dokonałem korelacji z tym błędem cygwin, dopóki nie zobaczyłem tego postu, więc DZIĘKUJĘ! Mam zamiar zaktualizować skrypt, który wywołuje selen w celu zabicia procesu chromedriver.exe przed zamknięciem.
beaudet

6

Otwórz menedżera zadań i zabij proces z nazwą bash, to zadziałało.


6

Dzieje się tak, gdy wyjdziesz z git bash bez kończenia istniejącego procesu. Po prostu spróbuj zabić te procesy, które zacząłeś od git bash. Uruchomiłem proces węzłowy wewnątrz git bash, więc zabiłem wszystkie kroki procesów węzła do zabicia

  1. Otwórz Menedżera zadań
  2. Idź do zakładki Szczegóły
  3. Poszukaj node.exe (szukasz swoich procesów)
  4. Zabij to każdy proces węzłowy
  5. Otwórz ponownie Git Bash

2
W moim przypadku tak było adb shell. Więc uruchomiłem adb kill-serverjuż otwarte okno i naprawiłem to dla mnie. +1
lucidbrot

Pracował. Ale co do cholery… Nie robiłem żadnego node.js od miesięcy… Dlaczego to działa?
JMI MADISON

5

w końcu zorientowałem się, co jest tego przyczyną.

jeśli używamy takiego kodu (jawnie lub niejawnie) np. w .bashrcpliku

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

rodzi nowy proces.

jeśli go nie wyjdziesz i po prostu zamkniesz okno, ten proces nadal działa. więc każdy nowy bash po prostu dodaje nowe, bez usuwania starych.

kiedy skończysz z oknem bash, po prostu naciśnij ctrl+dlub wpisz, exitaby zabić proces agenta, i nie powinieneś zabraknąć forków.


4

W moim przypadku muszę zabić Git bash w systemie Windows. Więc otworzył wiersz polecenia i uruchomił poniższe polecenie

$ tasklist

Wyświetli listę wszystkich uruchomionych zadań, a następnie będzie musiał zabić zadanie bash.exe za pomocą poniższego polecenia

$ taskkill /F /IM bash.exe 

nie znaleziono procesu bash.exe. To coś więcej niż jakiś bezpański exe, który kręci się w pobliżu.
Larry_C

3

Wydaje się, że rzeczywiście jest to problem z procesami uruchamianymi z git bash, jak zasugerował @mamacdon w swoim komentarzu do najlepszej odpowiedzi autorstwa @Scott Newson.

U mnie problem pojawił się, gdy uruchomiłem vscode z basha za pomocą codei jeśli ta instancja vscode uruchomiła zintegrowany terminal git, gdy oryginalny bash wciąż działał.

Nie ma znaczenia, czy ten terminal został uruchomiony na początku, czy później, o ile był jeszcze uruchomiony pierwotny bash.

Nie wydarzyło się, gdy bash został zamknięty przed otwarciem zintegrowanego terminala. Nie rozróżniłem między exiti zamykaniem bash przez okna. Nie wydarzyło się, gdy inne starsze okno bash nadal działało.

Aby sobie z tym poradzić, zamknąłem terminale w vscode za pomocą exitlub „Kill Terminal” (uważaj, aby nie pomylić tego z „close pane”) lub oczywiście zamknięcie samego vscode.

Jeśli pojawi się ten błąd, spróbuj zapamiętać, co uruchomiłeś z basha i zabij go. Jeśli inne odpowiedzi zadziałały dla ciebie, prawdopodobnie chodzi o to, że są to rzeczy uruchomione przez twój bash lub uruchomione przez procesy, które uruchomiłeś z basha i w jakiś sposób otrzymały dziecko twojego oryginalnego basha.


3

Jeśli korzystasz z Visual Studio Code i nie możesz znaleźć ssh-agent.exe lub nie możesz go wykonać, a po otwarciu Git Bash pojawia się ten błąd, po prostu przejdź do swojego VSCode otwórz Terminal> Nowy terminal i po prostu naciśnij ikonę kosza (Zabij terminal). np. (1: bash) jeśli masz wiele, po prostu zabij je wszystkie i powinieneś być dobry.



2

W moim przypadku rozwiązaniem było zamknięcie programu Visual Studio Code - tam, gdzie miałem też uruchomioną konsolę, nie zauważając -

Po zamknięciu wszystko wróć do normy. Mam nadzieję, że to komuś pomoże.


1

Próbowałem zabić wszystkie terminale git w menedżerze zadań, rozwiązując problem. U mnie to też działa. powodzenia.


1

W nowszej wersji git dla systemu Windows procesem do zabicia w menedżerze zadań był „GitExtensions.exe”. Zabiłem to i terminale uruchomiły się ponownie bez żadnych problemów.


1

Znajdź proces ssh-agent w oknie Menedżera zadań. Po zatrzymaniu lub zabiciu procesu ssh-agent błąd zniknie.


1

W moim przypadku działał kod Visual Studio i zamknięcie go rozwiązało problem.


1
Nie wiem, dlaczego jest to dyskutowane, zadziałało dla mnie. Ponadto kod Visual Studio może generować terminale, więc nie jest zaskakujące, że może to wpłynąć na ten problem.
Jesse Reza Khorasanee



0

Otwórz Menedżera zadań, znajdź proces bash.exe i zakończ go. Pomogło w moim przypadku.


0

Windows 10 to zadziałało dla mnie:

1) otwórz cmd jako administrator

2) rodzaj:

taskkill /f /im git-bash.exe


3) Jeśli wystąpił błąd: Nie znaleziono procesu „ssh-agent.exe”. następnie:

rodzaj:

tasklist

4) Znajdź i zabij każdy proces słowami takimi jak „bash” lub „git” (może to być niebezpieczne rozwiązanie, ale gdy już znajdziesz nazwę procesu, następnym razem się zorientujesz).

taskkill /f /im ***.exe


0

W moim przypadku miałem zbłąkany plik abd.exe, który nadal był otwarty w menedżerze zadań. Zabicie go rozwiązało problem.


Mogę zrestartować komputer, a uruchomienie git-bash nadal powoduje błąd.
Larry_C

0

W moim przypadku musiałem zabić sh.exe taskkill /F /IM sh.exe



-1

Po prostu uruchom ponownie komputer, podczas ponownego uruchamiania naszego komputera problem został rozwiązany, spróbuj.


2
lol zrobiłem to samo, rozwiązanie brzmi dość głupio, ale działa dobrze :)
zeroDivider

Możesz też poświęcić 10 minut na przeglądanie listy zadań z 500 pozycjami. Komenda .bashrc wydaje się być winowajcą
Larry_C
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.