Пару недель назад прочитал полезную статью на хабре: ⇨ Бросил tmux и написал свой инструмент Там автор прошёлся прям по больному.
⇨ Бросил 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