Пару недель назад прочитал полезную статью на хабре:



⇨ Бросил tmux и написал свой инструмент

Там автор прошёлся прям по больному. Он рассказал про разные терминальные мультиплексоры с упоминанием проблем, которые напрягают в повседневной работе. Я нигде и ни от кого не видел ранее такую подборку. Думал всегда, что это я один страдаю из-за неудобного скрола мышки в screen или глюками с буферами или интерактивными утилитами в tmux. Там в статье прям по пунктам всякие неудобства перечислены и чем они вызваны с точки зрения архитектуры приложений.

Вроде основную задачу по сохранении сессии SSH при разрыве соединения решают и screen, и tmux, но пользоваться ими неудобно. Я последние года стал пользоваться повсеместно tmux вместо screen, но всё равно из-за разных глюков делал это редко и только для долгоиграющих процедур, типа обновления, которые крайне нежелательно прерывать. Во всех остальных случаях я отключал мультиплексор и работал напрямую в консоли. А разделение сессий на одном экране реализовывал с помощью менеджера соединений, а не мультиплексора.

В итоге автор написал небольшую утилиту atch на С, которая работает идеально, если вам нужно просто сохранять сессию при разрыве соединения и потом обратно в неё подключаться. Нет никакой эмуляции терминала, как в screen или tmux. Atch ничего не парсит, не перекодирует, поэтому нет проблем со скролом мышки, пропаданием истории терминала, глюками с OSC-последовательностями.

Работает atch так, как надо, без каких-либо дополнительных настроек. Я попробовал, очень понравилось. В репозитории есть собранный бинарник, его достаточно скачать:



# curl -Lo atch.tgz https://github.com/mobydeck/atch/releases/latest/download/atch-linux-amd64.tgz
# tar -xzf atch-linux-amd64.tgz atch
# mv atch /usr/local/bin/

Утилита совсем новая. В репозиториях дистрибутивов её, разумеется, пока нет. Очень надеюсь, что она там со временем появится, потому что она удобна и проста, решает ровно одну задачу и делает это хорошо. Всё в духе философии UNIX.

Дальше создаём сессию work:



# atch work

И работаем в ней. Если соединение разорвалось, то подключаемся заново по SSH и заходим в сессию:



# atch work

Видим тут же в терминале всю историю терминала, которая была до отключения!!! Она пишется в ~/.cache/atch/ сразу же в момент вывода. И потом воспроизводится при повторном подключении к сессии. Ничего не теряется. Ты попадаешь в тот же вывод терминала, откуда тебя отключило. Это очень удобно.

Смотрим список сессий:



# atch list

Всё интуитивно и просто. Запоминать команды не нужно. Этого достаточно, чтобы пользоваться, для моих задач. Я после перехода из screen в tmux постоянно вспоминаю, как посмотреть список сессий.

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



# atch start deploy ./deploy.sh

И история автоматом сохранится. Автор также приводит пример с AI агентами, которые работают в сессии с atch, а потом можно посмотреть, что они там делали. В принципе, записать действия в консоли можно очень разными способами (подборка разных решений этой задачи). Этот возможно и не самый удобный для этой задачи, но максимально простой.

Если много работаете в консоли, используете screen или tmux, рекомендую попробовать atch. Вам должно понравиться. Давно мне не попадались утилиты, которые бы так порадовали своей простой и удобством. Казалось бы, уже всё давно придумано, но, как видим, ещё нет.

#linux #terminal
Просмотры: 9 864
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

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

Переход через 10 с

Перейти