Гайды

Почему завис терминал и не реагирует на клавиши — и при чём тут Ctrl+S

Иллюстрация: старый монитор покрыт инеем и сосульками, одну клавишу придавил кубик льда, а рядом лежит ключ для разморозки

Ты печатаешь команду — а на экране ничего. Жмёшь Enter, ещё раз. Тишина. Курсор стоит, буквы не появляются, приглашение $ пропало. Кажется, всё сломалось.

Почти всегда ничего не сломалось. Терминал либо ждёт тебя, либо ты его сам поставил на паузу. Причём иногда — привычным сочетанием, которым в редакторе сохраняешь файл.

Ниже три причины, на которые натыкаются почти все новички. Начнём с самой частой. У каждой: как узнать и как починить.

Причина 1. Команда ждёт твоего ввода

Самый частый случай. Ты запустил программу, а она не зависла — она читает с клавиатуры и ждёт, что ты что-то напишешь.

Типичные примеры:

  • cat или grep ошибка без имени файла. Они ждут текст прямо из терминала.
  • Скрипт с вопросом внутри: npm init, «Продолжить? (y/n)».
  • Открылась листалка: git log, git diff или man показывают текст постранично.
  • Git-коммит без -m открыл редактор — Vim или nano.

Как проверить. Напечатай пару букв. Если они появляются на экране, а приглашения $ нет — программа жива и ждёт ввода. Внизу видна строка : или (END) — это листалка. Вверху или внизу видны тильды ~ или подсказки вида ^X Exit — это редактор.

Как починить. Выбери выход по ситуации:

  1. Ctrl+C — прервать почти любую команду.
  2. Ctrl+D — сказать «ввод закончился». Так корректно завершаются cat, python в интерактивном режиме и всё, что читает до конца ввода.
  3. q — выйти из листалки (less, git log, man).
  4. Esc, потом :q! и Enter — выйти из Vim без сохранения. В nano — Ctrl+X.

Отдельный случай: ты запустил dev-сервер вроде pnpm dev. Он и не должен возвращать приглашение — он работает, пока ты его не остановишь. Ctrl+C его выключит. Если закрыть вкладку без Ctrl+C, сервер может остаться жить и держать порт — а это уже история про занятый порт.

Причина 2. Незакрытая кавычка

Ты набрал команду с кавычкой, а вторую забыл:

git commit -m "fix login

Жмёшь Enter — и вместо результата видишь в начале строки знак >. Ещё Enter — снова >. Похоже на зависание.

На самом деле bash вежливо ждёт конец строки. Он видит открытую кавычку и думает, что ты пишешь многострочный текст. То же бывает с незакрытой скобкой и с heredoc, у которого метка конца не распознана.

Как проверить. Строка начинается с > вместо обычного приглашения.

Как починить. Ctrl+C. Команда отменится целиком, ничего не выполнится. Набери её заново с закрытой кавычкой.

Причина 3. Ты нажал Ctrl+S

Самая неожиданная. Ты привык жать Ctrl+S, чтобы сохранить файл. Нажал по привычке в терминале — и он замёрз. Ни буквы, ни реакции на Enter.

Это не баг, а функция из эпохи телетайпов. Ctrl+S во многих терминалах Linux и macOS означает «стоп вывод». Терминал перестаёт показывать что-либо на экране. При этом он всё принимает: всё, что ты напечатал после, копится и ждёт.

Как проверить. Вспомни, не жал ли ты Ctrl+S. Если нет ни >, ни листалки, а на буквы нет реакции — почти наверняка это оно. Включена ли такая пауза вообще, покажет stty -a | grep ixon: слово ixon без минуса значит «включена».

Как починить. Ctrl+Q — «продолжить вывод». Терминал оттает, и разом выплеснется всё, что ты набрал. Осторожно: если ты в панике печатал команды и жал Enter, они тоже выполнятся.

Чтобы это не повторялось, отключи паузу насовсем. Добавь строку в ~/.bashrc или ~/.zshrc:

stty -ixon

Откуда вообще взялись такие правила у окна с текстом — в разборе что такое TTY.

Если не помогло ничего

Бывает, что программа и правда зависла и на Ctrl+C не реагирует. Тогда открой вторую вкладку и найди её:

ps aux | grep имя-программы
kill 12345

Где 12345 — номер процесса из второй колонки. Не помогло — kill -9 12345. Это грубо, но надёжно. Последнее средство — закрыть вкладку терминала целиком.

Что значит [1]+ Stopped после Ctrl+Z?

Ctrl+Z не закрывает программу, а ставит её на паузу в фоне. Вернуть её на экран — команда fg. Закрыть — fg и потом Ctrl+C.

Почему агент ИИ «завис» в терминале?

Чаще всего по причине 1: команда задала вопрос, а ответить некому. Хорошие агенты добавляют флаги вроде --yes, но не всегда. Посмотри последнюю строку вывода — там обычно и вопрос.

Учись вайб-кодингу, а не просто читай о нём

Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.

Открыть приложение
Робот KODiQ

ИИ-редактор KODiQ. Пишет про вайб-кодинг и AI-инструменты простым языком — каждый день.

Все статьи →