Comments 45
Сам недавно столкнулся с такой проблемой, пытался решить её через CTRL+Z -> bg -> disown, правда так до конца и не понял, сработало ли, ибо забыл изменить имя выходного файла на новое, дабы проверить выходные результаты с уже имеющимися 😅
Автору спасибо за статью, всё чётко, кратко и по делу 👍🏻
Каждый байт, который пишется в терминал, дописывается в лог-файл на диске. Не в памяти — на диске
Это значительно сократит жизнь SSD, и в некоторых устаревших дистрибутивах, где в /home/$user права r-xr-xr-x, позволит читать сессии.
Круто! Осталось переписать на Rust и можно юзать :)
было бы неплохо! но у меня на это времени нет увы 😎
Это убьет главное преимущество инструмента - сборку за секунду на любом калькуляторе с POSIX и GCC. Rust потянет за собой Cargo, зависимости и бинарник на 5 мегабайт вместо 50 килобайт
Странно что как будто никто не знает про byobu. Это враппер поверх tmux или screen с готовыми конфигами для людей, с ним можно сносно жить и не знать ужасов настройки всего этого легаси.
Но вообще респект, вот такой простой тулзы реально бывает не хватает, чтобы без лишних фокусов были персист сессии, реаттач и скроллбек.
Запускаешь сервер в atch-сессии, даёшь имя сессии коллеге, он аттачится и смотрит вывод. Несколько клиентов могут быть подключены к одной сессии одновременно — все видят один стрим.
А как же разделение по пользователям? Или предполагается, что все коллеги ходят на сервер под одной учёткой?
отличная вещь, утащил себе
один мелкий баг - если я внутри сессии делаю
```
# atch kill test1
[1] 1662212 terminated
# atch current
test1
<Crtl+\>
atch: session 'test1' detached
# atch list
test1 since 2m 35s ago
# atch kill test1
./atch: session 'test1' did not stop
```
Со всеми этими новыми инструментами есть одна проблема: их нет в репах системы, которая запущена на сервере.
Мой подход, конешно, многие сочтут примитивным, но я просто использую табы в терминале и в каждом запускаю сессию ssh (SSH ControlMaster). То, что нужно запустить в deattach запускаю в tmux. Никаких проблем с копированием текста туда-обратно, скроллом и т.д. Сплиты я все равно никогда не использовал, мне табов хватает.
Насколько я понимаю, основная проблема со всеми этим tmux'ами в том, что сделать хорошо без изменений в терминалах сложно/невозможно, а терминалы слишком консервативные.
я тмукс не использую, но я знаю, что есть второй подход, помимо приложения эмулирующего терминал(XTERM-pty или VT-pty), там пошустрее попроще донастроить окружение, грубо говоря, если это не tty сессия, то проще просто визуально настроить окружение в текстовом оформлении ), к слову 2 таких примера я себе реализовал, 1 - это просто терминал на java(pty), а второе(та самая текстовая обвязка приложения на окружение) это текстовое окружение визуальное с визуальным поведением терминала(без сессии) тоже на java - оба опыта просто великолепны, но я с тмукс даже не знаком ), в планах, замикшировать эти 2 решения в одно ) обвязать буферами по вызову ), тоесть представьте, можно иметь такое приложение, где можно вызывать своё текстовое пространство иметь клипбоард, и иметь хоткей на терминал стандартный(VT-pty с сессией)
тоесть (GUI text style)текстовая умная оболочка, которая имеет свои утилиты связывает разрозненные команды системы, и где есть свой емулятор терминала стандартный
Я тоже никогда не понимал этого культа screen и подобного (может, потому что далёк от админства). До старта иксов доступна текстовая виртуальная консоль Alt-F[1..n]. В иксах можно запустить табовый эмулятор терминала (их тьма, например tilix), настроить вывод на каждый таб последней исполненной команды для удобства ориентирования, переключаться Ctrl-Tab и Alt-[1..n] и всё. Не нужны никакие специальные комбинации, мышь и прочее. Да, по ресурсам, возможно, несколько затратнее, но на фоне Electron-приложений...
Иногда бывает, что вся разработка и любая работа с данными должны быть на специальном сервере. А на вашем компе/ноутбуке только браузер, терминал с ssh, ну и vs code.
"Культ screen и подобного" возникает не когда ты работаешь у себя на машине, а когда зашел по ssh на сервер и запускаешь там что-то продолжительное. В таком случае "подобное" позволяет запустить и уйти/оторваться, а потом вернуться и посмотреть, как оно там и чем дело кончилось. А не так, что ты зашел, запустил fsck какой-нибудь, а у тебя соединение с сервером отвалилось.
Спасибо. Попробовал на древнем Raspberry Pi Model B (Pidora18, репозиторий уже не работает), собрался после удаления -static. Работает нормально.
Так же проверил на Ubuntu 24, тоже работает.
Переизобретение dtach в 2026 году конечно похвально, но 99% сисадминов используют tmux не ради чистоты архитектуры, а потому что он есть в базовых репозиториях любого дистрибутива. Пришел на сервер, написал apt install tmux, и работаешь
А тащить свой кастомный бинарник из исходников на каждый прод-сервер это путь самурая-одиночки :)
Правильно ли я понял, что мегабайт лога всегда проигрывается полностью при каждом подключении? То есть если у нас дохлый линк через мобилу, например, то можно и не дождаться актуального состояния?
(Просто смотрю на это с позиции человека, подключенного к машине по се́риалу на 9600)
Всегда считал, что терминал - это как раз то место, где мышь нужна по минимуму. Когда я в нём работаю, у меня обе руки на клавиатуре. Мышь иногда хватаю, чтобы скопировать что-то в терминал или из него. У вас большой упор идёт именно на решение проблем с использованием мыши. Это касается в первую очередь удобства прокрутки лога? Я уже привык нажимать C-A+{ для прокрутки, но чаще это работа с файлом в vim и, соответственно, достаточно быстрая навигация клавиатурой.
В копилку к прочим аналогам - shell-pool/shpool. Идея аналогичная - просто сохранение сессий, без окон и пейнов. Пользовался какое-то время, потом перешёл на zellij.
И оно на расте, раз тут в комментах спрашивают.
спасибо огромное! Узнал про atch и abduco. Работает (atch) действительно просто и удобно. Да, tmux надоедает, особенно после паузы в использовании, когда не хочется лезть и настраивать.
Вопрос. Если не нужен вывод истории в файл, можно ли его отключить? Пока по документации такой опции не смог найти.
отключить нельзя, но я могу добавить, если объясните как вам нужно отключать. либо по флагу при запуске, либо во время компиляции функционал отключить.
как будто флаг лучше. Например "-C" disable disk cache.
Лучше сделать возможность указывать размер кэша. Оставить мегабайт по-умолчанию.-C 0 # Отключить
-С 128k # 128Кб
-С 4m # 4Мб
Ну задумку вроде объяснил.
добавил! 😎 вот пример:
atch -C 4m new mysession # 4 MB cap
atch -C 128k start daemon # 128 KB cap
atch -C 0 start daemon # no log at all-C <size>Set the on-disk log cap for the session being created. Accepts a bare number (bytes), or a number with k/K (KiB) or m/M (MiB) suffix. 0 disables the log entirely. Default: 1m.
Если нужно просто запустить что-то в фоне и уйти пользую nohup. Он не настолько продвинутый, просто позволяет процессу пережить отключение терминала и весть вывод валит в nohup.out. Зато поставляется с coreutils
Бросил tmux и написал свой инструмент