Як перезавантажити термінал: повний робочий гайд

Термінал зависає рідше за браузер, але коли це трапляється — курсор не блимає, команди провалюються в порожнечу, а екран засипає символами на кшталт “^[[0m^[[1m” — рятує один із кількох простих прийомів перезапуску, від легкого “reset” усередині сесії до повного перезавантаження WSL чи закриття процесу емулятора.

Причини завжди різні: обірваний SSH-канал, програма, що змінила налаштування tty і забула повернути їх назад, зависла оболонка після оновлення системи чи банальний конфлікт кодування, через який кирилиця перетворюється на ієрогліфи. Нижче — конкретні команди та кроки для Linux, macOS, Windows Terminal і WSL, а також підказки, коли достатньо м’якого “reset”, а коли варто вбити процес силою.

Що насправді означає “перезавантажити термінал”

Термінал — це не одна програма, а зв’язка з двох частин: емулятор терміналу (вікно, у якому ви бачите текст, наприклад GNOME Terminal, iTerm2 чи Windows Terminal) і оболонка всередині нього (bash, zsh, PowerShell). Коли люди кажуть “перезавантажити термінал”, вони можуть мати на увазі три різні дії: скинути стан tty без закриття вікна, перезапустити саму оболонку без закриття вікна, або повністю закрити й заново відкрити програму-емулятор.

Плутанина між цими трьома рівнями — головна причина, чому одна й та сама порада працює в одному випадку і виявляється марною в іншому. Спершу варто визначити симптом: якщо текст просто виглядає зіпсовано, а команди виконуються — потрібен скид tty. Якщо оболонка не реагує зовсім — потрібен перезапуск процесу. Якщо саме вікно програми глючить — доведеться закрити застосунок.

Швидкий скид термінала командою reset

Найпоширеніша ситуація в Linux і macOS — це “сміття” на екрані після того, як ви випадково вивели у консоль бінарний файл командою cat або програма перервалася, не встигнувши повернути tty у нормальний стан. У такому разі оболонка ще жива, і достатньо ввести команду, навіть наосліп, якщо символи не читаються:

  • reset — найповніша команда, яка ініціалізує термінал заново: очищає екран, відновлює кодування керуючих символів і скидає налаштування tty до значень за замовчуванням. Вводьте її навіть тоді, коли на екрані видно лише мотлох — Enter після слова reset все одно спрацює.
  • tput reset — робить майже те саме, що й reset, але спирається на базу terminfo і виконується практично миттєво, без короткої паузи, яку іноді дає команда reset.
  • stty sane — не чіпає вміст екрана, а лише повертає параметри лінії termios (ехо символів, обробку Backspace, переноси рядків) до розумних значень за замовчуванням. Корисно, коли текст виглядає нормально, але клавіатура поводиться дивно — наприклад, Backspace друкує “^?” замість видалення символу.
  • clear або Ctrl+L — це не скид, а лише очищення видимої області екрана разом зі скролбеком; стан tty при цьому не змінюється, тож якщо проблема саме в налаштуваннях лінії, clear не допоможе.

Якщо жодна з команд не набирається як слід через зіпсоване відображення, спробуйте послідовність reset && clear — вона гарантує і скид стану, і чистий екран одразу після нього. Деякі досвідчені адміністратори також задають тип терміналу перед скидом явно, наприклад TERM=xterm reset, коли автоматичне визначення типу дало збій після дивного SSH-з’єднання.

Типові помилки при перезапуску терміналу

  • Одразу закривати вікно терміналу при першому ж збої, хоча команда reset вирішила б проблему за секунду й зберегла історію команд поточної сесії.
  • Плутати clear із повноцінним скидом: після clear екран чистий, але зламані налаштування tty нікуди не зникають, і гібрид з’явиться знову при наступному виведенні.
  • Намагатися перезапустити оболонку командою exec bash у сесії, де вже втрачено зв’язок з tty, — команда просто не виконається, бо немає керуючого терміналу для нового процесу.
  • Вбивати процес термінала через диспетчер задач, не спробувавши спершу м’якший варіант, через що втрачаються всі відкриті вкладки та історія незбереженого виводу.
  • Забувати, що в SSH-сесії проблема часто на стороні віддаленого хосту, тож локальний reset клієнтського вікна нічого не виправить, поки не буде відновлено саме з’єднання.

Перезапуск оболонки без закриття вікна

Коли скид tty не допомагає, а оболонка все ще приймає команди, наступний крок — замінити поточний процес оболонки новим, не закриваючи вікно емулятора. У bash і zsh це робиться командою exec bash або exec zsh відповідно: система замінює поточний процес оболонки на новий екземпляр із тим самим PID, тож усі змінні середовища оновлюються, а конфігураційні файли (.bashrc, .zshrc) перечитуються з нуля.

Такий підхід рятує, коли ви змінили змінну PATH, підключили новий менеджер версій на кшталт nvm чи pyenv, або відредагували файл конфігурації оболонки й не хочете відкривати нову вкладку. Різниця з простим відкриттям нової вкладки в тому, що exec не породжує додатковий процес-нащадок, а перевикористовує наявний, тож історія команд у файлі history зберігається без розриву сесії.

Для оболонок на кшталт fish команда виглядає як exec fish, а в PowerShell аналогічну роль виконує повторний запуск pwsh або команда & $PROFILE для перечитування профілю без повного перезапуску процесу.

Коли термінал завис повністю: вбити процес і відкрити новий

Іноді ні reset, ні exec не спрацьовують, бо оболонка чекає на завершення процесу, який більше не відповідає, — наприклад, зависла програма-нащадок або “мертвий” SSH-канал, у якому клієнт досі думає, що з’єднання живе. У такому разі допомагає жорсткіший варіант.

Ситуація Що зробити Платформа
Символи-сміття на екрані, оболонка відповідає reset або tput reset Linux, macOS
Клавіатура поводиться дивно, ехо зламано stty sane Linux, macOS
Оболонка жива, потрібне чисте середовище exec bash / exec zsh Linux, macOS
Оболонка не відповідає взагалі Закрити вкладку/вікно емулятора, відкрити нове Усі системи
Windows-термінал завис повністю Диспетчер задач → завершити WindowsTerminal.exe Windows
Дистрибутив WSL не реагує wsl –shutdown, потім новий запуск Windows / WSL

Джерела даних: документація Microsoft Learn (розділ WSL), матеріали cyberciti.biz.

У Linux і macOS, якщо вкладка не закривається штатно, можна знайти PID процесу оболонки командою ps і завершити його через kill -9 з іншого вікна терміналу — це жорсткий, але надійний спосіб звільнити зависле з’єднання, коли емулятор перестав реагувати на будь-які клавіші.

Перезапуск термінала на macOS

У стандартному застосунку Terminal.app на macOS швидка комбінація Cmd+K очищає буфер прокрутки, що часто вирішує проблему захаращеного виводу, але не скидає стан tty — для цього все одно знадобиться команда reset усередині сесії. Якщо вкладка справді зависла, можна закрити її через Cmd+W: система попередить про активний процес і запропонує примусово завершити його.

Користувачі iTerm2 мають додаткову перевагу — у меню Session є пункт Restart Session, який перезапускає оболонку в тій самій вкладці, зберігаючи розмір вікна, кольорову схему та розкладку панелей, тож не доводиться заново відкривати split-панелі та налаштовувати профіль.

Windows Terminal, PowerShell і командний рядок

У Windows Terminal кожна вкладка — окремий процес оболонки (PowerShell, cmd або WSL), тож найпростіший перезапуск — закрити вкладку хрестиком чи через Ctrl+Shift+W і відкрити нову тим самим профілем через Ctrl+Shift+N. Це рівнозначно повному перезапуску процесу, оскільки Windows Terminal одразу створює свіжий екземпляр оболонки з чистим середовищем.

Коли зависає саме вікно програми Windows Terminal, а не окрема вкладка, найшвидший вихід — Диспетчер задач: знайдіть процес WindowsTerminal.exe у списку застосунків і оберіть “Завершити завдання”. Після цього застосунок можна запустити заново з меню Пуск або ярлика на панелі завдань, і всі профілі завантажаться зі стандартними налаштуваннями з файлу settings.json.

Перезапуск термінала всередині WSL

Windows Subsystem for Linux — окремий випадок, бо там термінал працює поверх легкої віртуальної машини, і іноді проблема ховається саме на цьому рівні, а не в оболонці bash усередині дистрибутива. Якщо звичайний reset чи exec bash не рятують ситуацію, у PowerShell чи командному рядку Windows варто виконати наступні кроки.

  • Спершу спробуйте м’який варіант — wsl –terminate ІмʼяДистрибутива, який зупиняє тільки конкретний дистрибутив, не чіпаючи інші запущені системи чи саму віртуальну машину WSL.
  • Якщо проблема глибша, використайте wsl –shutdown — ця команда миттєво зупиняє всі запущені дистрибутиви й вимикає легку віртуальну машину WSL 2 повністю, після чого потрібно почекати кілька секунд перед повторним запуском.
  • Список активних дистрибутивів і їхній стан можна перевірити командою wsl –list –running перед тим, як вирішувати, який саме дистрибутив термінувати.
  • Після виконання wsl –shutdown достатньо знову відкрити ярлик дистрибутива або ввести його назву в Windows Terminal — система підніме віртуальну машину заново з чистого стану.

За офіційною документацією Microsoft Learn, команда wsl –shutdown є найшвидшим способом повністю перезапустити середовище WSL 2, хоча вона й закриває абсолютно всі запущені дистрибутиви одночасно, тож варто зберегти незбережену роботу в кожному з них заздалегідь.

Коли реально потрібне перезавантаження всієї системи

Скид термінала — це майже завжди локальне й швидке рішення, яке не чіпає решту операційної системи. Але є ситуації, коли проблема глибша за одну сесію: драйвер відеокарти конфліктує з рендерингом emulator-вікна, оновлення ядра Linux вимагає перезавантаження для активації, або файлова система термінала (наприклад, псевдотермінали /dev/pts) вичерпала ліміт дескрипторів через масове відкриття сесій без закриття.

У таких випадках жоден reset чи exec не допоможе, бо проблема живе на рівні ядра або драйвера, а не окремого процесу. Ознака, що варто перезавантажити саму систему, а не лише термінал: нові вкладки взагалі не відкриваються, у логах системи (dmesg чи Console.app на macOS) з’являються помилки про нестачу псевдотерміналів, або проблема повторюється одразу після кожного відкриття нового вікна незалежно від того, яку оболонку ви обираєте.

Поради для стабільної роботи терміналу

  • Тримайте окрему “рятівну” вкладку відкритою постійно, щоб мати звідки виконати kill для завислого процесу в іншій вкладці.
  • Додайте в конфігурацію оболонки псевдонім на кшталт alias fixterm=’reset && clear’, щоб не набирати дві команди щоразу вручну.
  • У SSH-сесіях вмикайте параметр ServerAliveInterval у файлі ~/.ssh/config — це зменшує кількість “мертвих” з’єднань, які виглядають як завислий термінал.
  • У WSL плануйте wsl –shutdown на моменти, коли всі проєкти збережені, оскільки команда закриває геть усі дистрибутиви одночасно, а не лише проблемний.
  • Якщо термінал регулярно зависає після конкретної команди чи скрипта, перевірте, чи не змінює цей скрипт налаштування tty напряму через stty без відновлення їх наприкінці виконання.

Розуміння різниці між скидом стану, перезапуском оболонки й повним перезавантаженням системи економить хвилини щодня — а для тих, хто працює з терміналом годинами поспіль, ці хвилини складаються у справжню економію часу й нервів протягом тижня.

Leave a Reply

Your email address will not be published. Required fields are marked *