Ошибка git bash: не удалось обработать дочерний процесс: нет доступных терминалов (-1)

191

У меня было до 8 терминалов git bash, работающих одновременно.

В настоящее время у меня только 2 вверх.

Я не видел эту ошибку раньше, и я не понимаю, что является причиной этого.

Любая помощь будет оценена!

Картинка прилагается:

введите описание изображения здесь

А. Петрицца
источник
10
Уничтожение процесса сработало для меня.
bfranzen
37
-1 на все текущие ответы. Все варианты «просто убей терминал и начни заново». В чем основная проблема? Почему я не могу иметь 100 терминалов?
RJFalconer
32
У меня была такая проблема в течение столь долгого времени, и я так и не смог до нее добраться. Кажется, что приложения остаются открытыми, что может привести к тому, что некоторые дескрипторы останутся открытыми, но в моем случае процессы bash были закрыты, и вокруг не было никаких процессов ssh (я использую mosh). Я только что смог повторить проблему, запустив vscode с помощью, vscode .а затем закрыв терминал, который использовался для его открытия. Хотя окно vscode остается открытым, кажется, что Cygwin не хочет открывать больше терминалов, как только я его закрываю, оно работает.
Эльфийский Заклинатель
25
@ ElvenSpellmaker вы правы, это касается и code .моего случая.
Билал Хоухи
15
Просто для подтверждения: столкнулся с проблемой сегодня, также было связано с code .моим делом. Закрытие VS Code прояснило проблему. Отличная находка @ElvenSpellmaker
кб.

Ответы:

83

Нашел похожую проблему и решение в группах Google

Я открыл командную строку Windows и запустил команду

$ tasklist

Похоже, что ssh-соединения, которые я установил в своих оболочках git bash, не были закрыты, когда эти окна были закрыты, и висели доступные окна оболочки git bash.

Это может быть опасным решением, но из командной строки Windows я запустил

$ taskkill /F /IM ssh.exe 

После этого все снова работает. Возможно, это напрямую не было проблемой бесхозных процессов, но это работало, по крайней мере, для меня.

Дополнительное примечание: вы также можете убить другие процессы, например:

$ taskkill /F /IM vim.exe
Скотт Ньюсон
источник
6
Эта процедура сработала, хотя в моем случае виновниками были node.exe(Node.js) и link.exe(ссылка GNU). Таким образом, вам, возможно, придется искать в списке задач виновные процессы. Я не уверен, почему, но кажется, что программы, запускаемые изнутри Bash-сессий, могут как-то превзойти свою родительскую оболочку.
Mamacdon
1
Спасибо Скотт, эта процедура работала, как упоминалось @mamacdon, даже в моем случае виновником был node.exe.
S52
21
Для меня я должен был выполнить "taskkill / F / IM ssh-agent.exe", но достаточно близко для голосования.
Дилан Капп
12
Мне пришлось убить node.exe с помощью командыtaskkill /F /IM node.exe
Tarator
1
В моем случае (с Cygwin) это был единственный adb.exe, который все еще работал. Убить это решено.
Диего Андраде
58

Я вижу проблему с окнами в git bash, когда убиваю консоль git bash, не используя выход. Я нашел убийство ssh-agent.exe из диспетчера задач Windows, чтобы решить эту проблему.

Джо З
источник
4
Это сработало изначально. Теперь я все еще получаю это, даже после убийства ssh-agent.exe.
Лев
1
это краткосрочное решение. проблема возвращается в конце концов. надеясь, что есть более постоянный способ исправить эту проблему
Sonic Soul
1
Я также обнаружил, что Node иногда тоже работает, просто убивая, что, казалось, решило проблему для меня.
MusicDev
после уничтожения процесса "sh.exe" проблема решена. Спасибо всем.
Марис
Убийство "winpty-agent.exe" сработало у меня.
demstair
48

В моем случае это было связано с использованием кода VS. Ранее я открыл код VS с помощью терминала git bash и выполнил

code .

затем закрытие терминала.

Проблема решается путем закрытия всех открытых окон кода VS.

Если у вас есть какой-либо редактор или IDE, настроенный для открытия терминала как git bash, то когда IDE / IDE работает, git bash будет раскручивать bash из «C: \ Windows \ System32 \ bash.exe» и любые другие попытки открытие bash из отдельного окна может привести к сбою.

Лучшее решение - убить панель IDE / Editor и открыть ее из нового окна или продолжить с помощью команды IDE / Editor.

Федерико Качча
источник
4
Спасибо, это была та же самая проблема со мной
Тарун
1
Работал как шарм! Спасибо!
jrend
1
Была такая же проблема. Следует просто открыть против кода в cmd.
Ричард
Точно такая же проблема. Спасибо.
Люсьен Лу
точно такая же проблема. В любом случае, спасибо.
Amar Deep
33

Я обращаюсь к этому с обходным путем:

  1. Закройте окно Git Bash.
  2. Откройте диспетчер задач.
  3. Найдите процесс Git для Windows.
  4. Убей это.
  5. Откройте Git Bash.

Теперь все должно быть в порядке.

Return_Of_The_Archons
источник
3
самое простое решение. Так просто.
JkAlombro
2
В моем случае у меня был запущен bash.exe, и я просто убил его.
Гилберто Альбино
8

Чтобы облегчить жизнь (такие проблемы случаются довольно часто), создайте файл с именем fixbash.batв домашнем каталоге и вставьте его:

taskkill /F /IM ssh-agent.exe

Когда проблема возникает, просто откройте cmdи введите, fixbash.batчтобы решить проблему.

Или

Просто вставьте команду taskkill в вашу, cmdесли вы не хотите создавать скрипт.

Klimat
источник
2
Возвращается:ERROR: The process "ssh-agent.exe" not found.
Джесси Реза Хорасани
Это решение сработало для меня. Однако вы должны пойти в диспетчер задач и уничтожить все ssh-agent.exe, так как их может быть много
Java Main
6

Перезагрузите машину.

(Другие ответы у меня не сработали. (Я не пробовал переустанавливать. Вероятно, перезапуск быстрее).)

andydavies
источник
3
И если это не сработает, переустановите свою машину или купите новую.
Джон16384
6

Для меня (или кто работает транспортир, который может раскрутить автономный Селен / WebDriver сервера), мне нужно taskkillв конкретной WebDriver , который работает мои тесты.

Так что просто другой аргумент: или ваша версия chromedriver может отличаться

taskkill /f /im chromedriver_2.34.exe

Обратите внимание, что ваш драйвер может отличаться: IEDriverServer*.*.*.exeпротивchromedriver_*.**exe

Ваш водитель может версия может меняться: chromedriver_2.34.exeпротивchromedriver_2.33.exe

Эта проблема усугубилась после того, как транспортир вышел из системы, не закрыв браузер с автоматическим / тестовым управлением (из-за отдельной проблемы, которую я пока не понимаю). Естественно, многие chromedriverзадачи остаются запущенными, поэтому убивают их.

Красный горох
источник
3
Да, это была моя проблема. У меня есть удобный скрипт, который использует Selenium для извлечения некоторых вещей с некоторых веб-сайтов, где curl и wget не могут быть использованы из-за необходимости обрабатывать JavaScript. Во всяком случае, я обычно запускаю это один раз утром, а иногда это зависает. Я никогда не делал корреляции с этой ошибкой Cygwin, пока я не увидел этот пост, так что СПАСИБО! Я собираюсь обновить скрипт, который вызывает селен, чтобы завершить процесс chromedriver.exe перед выходом.
Боде
6

Откройте диспетчер задач и убейте процесс с именем bash, у меня это сработало.

Хари
источник
6

Это происходит при выходе из git bash без прекращения существующего процесса. Просто попробуйте убить те процессы, которые вы начали с git bash. Я запускал процесс узла внутри git bash, поэтому я убил все процессы узла

  1. Открыть диспетчер задач
  2. Перейти к вкладке "Сведения"
  3. Ищите node.exe (вы ищите свои процессы)
  4. Убей это каждый процесс узла
  5. Снова откройте Git Bash
Ishan
источник
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, просто нажмите ctrl+dили введите, exitчтобы убить процесс агента, и у вас не должно быть разветвлений.

Sonic Soul
источник
3

Кажется, проблема действительно связана с процессами, запускаемыми из git bash, как @mamacdon, предложенный в комментарии к главному ответу @Scott Newson.

Для меня проблема появилась, если я запустил vscode из bash с code , и если этот экземпляр vscode запустил интегрированный терминал git, когда исходный bash еще работал.

Неважно, был ли этот терминал запущен в начале или позже, если он был в то время, когда оригинальный bash еще работал.

Не произошло, когда bash был закрыт до открытия интегрированного терминала. Не различатьexit закрытием bash через окна. Не случилось с другим старым окном bash, все еще работающим.

Для меня было возможно закрыть терминалы в vscode с помощью exit или «Kill Terminal» (будьте осторожны, чтобы не перепутать это с «закрыть панель»), или, конечно, закрыть сам vscode.

Если вы получили эту ошибку, попробуйте вспомнить, что вы запустили из bash, и убейте ее. Если другие ответы сработали для вас, возможно, это просто вещи, запущенные вашим bash или запущенные процессами, которые вы запустили из bash, и они каким-то образом стали потомками вашего исходного bash.

Sam96
источник
3

Если вы используете код Visual Studio и не можете найти ssh-agent.exe или не можете выполнить задачу, и после открытия Git Bash вы получаете эту ошибку, просто перейдите в VSCode, откройте «Терминал»> «Новый терминал» и просто нажмите значок корзины. (Убить Терминал). например (1: bash), если у вас есть несколько, просто убейте их всех, и вы должны быть хорошими.

Джастин Балагер
источник
3

В моем случае мне нужно убить Git Bash в Windows. Так открыл командную строку и запустил ниже команды

$ tasklist

В нем будут перечислены все запущенные задачи, затем необходимо убить задачу bash.exe, используя следующую команду

$ taskkill /F /IM bash.exe 
Ватсал Шах
источник
2

Откройте диспетчер задач, найдите «sh» и убейте их. Удачи

Грейс Николь
источник
2

В моем случае решением было закрыть код Visual Studio - там, где у меня тоже была консоль, не замечая -

После закрытия все возвращается на круги своя. Надеюсь, это кому-нибудь поможет.

Herzling
источник
1

Я попытался убить все мои git-терминалы в диспетчере задач, решает проблему. Это работает и для меня. удачи.

Рахул Найкнавер
источник
1

В более поздней версии git для windows процесс, который нужно было убить в диспетчере задач, был «GitExtensions.exe». Убил это и терминалы перезапустились без проблем.

Джо Шелби
источник
1

Найдите процесс ssh-agent в окне диспетчера задач. После того, как вы остановите или убьете процесс ssh-agent, ошибка исчезнет.

Сохан Джангид
источник
1

В моем случае я запустил код Visual Studio и закрыл его, что решило проблему.

mhand
источник
1
Не уверен, почему это получает отрицательный голос, работал для меня. Кроме того, код Visual Studio может иметь генерирующие терминалы, поэтому неудивительно, что это может повлиять на эту проблему.
Джесси Реза Хорасани
0

Переустановил мерзавец, теперь работает нормально.

Пратеш п
источник
0

я обнаружил, что убийство терминала msys2 в диспетчере задач решает проблему

user2293554
источник
0

Откройте диспетчер задач, найдите процесс bash.exe и убейте его. Помогло в моем случае.

Bahti
источник
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

Для windows, в диспетчере задач убей sh.exe.

Гюркан Кавакчи
источник
0

В моем случае у меня был запущенный файл abd.exe, который все еще был открыт в диспетчере задач. Убийство решило проблему.

cag8f
источник
-1

В системе Bash тип:

ps

Убить любой плохо выглядящий процесс:

kill -9 <ID>

Работал на меня.

Дамиан Чапевский
источник
-1

Просто перезагрузите свою машину, пока перезагрузите нашу машину, эта проблема решена попробуйте.

Акшай Салви
источник
4
«Если это не сработает, попробуйте отключить электричество в вашем здании, затем подключите его обратно. Если это не сработает, попробуйте позвонить в местную электроэнергетическую компанию и попросить их отключить электричество для всего района для несколько минут ... и т. д. "
refaelio
1
LOL Я сделал то же самое, решение звучит довольно глупо, но он работает просто отлично :)
zeroDivider