Pull to refresh

Comments 45

Сам недавно столкнулся с такой проблемой, пытался решить её через CTRL+Z -> bg -> disown, правда так до конца и не понял, сработало ли, ибо забыл изменить имя выходного файла на новое, дабы проверить выходные результаты с уже имеющимися 😅

Автору спасибо за статью, всё чётко, кратко и по делу 👍🏻

да, наша "боль" – двигатель инноваций 😁

Каждый байт, который пишется в терминал, дописывается в лог-файл на диске. Не в памяти — на диске

Это значительно сократит жизнь SSD, и в некоторых устаревших дистрибутивах, где в /home/$user права r-xr-xr-x, позволит читать сессии.

у кого как... я в основном удаленно подключаюсь к виртуалкам в облаке и все они как правило живут не долго на одном физическом сервере. для меня atch это инструмент, который, как молоток без которого иногда не обойтись, но постоянно он не нужен 😂

Круто! Осталось переписать на Rust и можно юзать :)

было бы неплохо! но у меня на это времени нет увы 😎

Это всё отмазки :)

Это убьет главное преимущество инструмента - сборку за секунду на любом калькуляторе с POSIX и GCC. Rust потянет за собой Cargo, зависимости и бинарник на 5 мегабайт вместо 50 килобайт

Зато можно сделать бинарник один раз и копировать куда угодно.

кстати, я же тоже собираю статичные бинарники atch, написанного на С, и всё работает, и размер в килобайтах.

Да, может бинарь будет чуть-чуть крупнее, например 800кб, но будет больше внутренних проверок на ошибки и т.п.

Странно что как будто никто не знает про byobu. Это враппер поверх tmux или screen с готовыми конфигами для людей, с ним можно сносно жить и не знать ужасов настройки всего этого легаси.

Но вообще респект, вот такой простой тулзы реально бывает не хватает, чтобы без лишних фокусов были персист сессии, реаттач и скроллбек.

А я недавно открыл для себя zellij, который удобнее byobu.

да, видел недавно zellij, прикольная вещь, но слишком много наворотов для всех моих юскейсов

да, спасибо! 👍 а про byobu не знал. потом гляну

Запускаешь сервер в atch-сессии, даёшь имя сессии коллеге, он аттачится и смотрит вывод. Несколько клиентов могут быть подключены к одной сессии одновременно — все видят один стрим.

А как же разделение по пользователям? Или предполагается, что все коллеги ходят на сервер под одной учёткой?

конечно у каждого пользователя в системе есть свои сессии и логи, которые хранятся а ~/.cache/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'ами в том, что сделать хорошо без изменений в терминалах сложно/невозможно, а терминалы слишком консервативные.

А почему то, что нужно запустить в detach, не запустить просто через nohup? А вывод потом можно смотреть через tail -f

потому что не всем это подходит. часто нужна интерактивность, а не только голый лог.

я тмукс не использую, но я знаю, что есть второй подход, помимо приложения эмулирующего терминал(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, тоже работает.

класс! можно и статик собрать под эту архитектуру. я обычно на Alpine их собираю под x86_64/aarch64, чтобы потом просто скачивать готовый бинарник когда надо.

Переизобретение dtach в 2026 году конечно похвально, но 99% сисадминов используют tmux не ради чистоты архитектуры, а потому что он есть в базовых репозиториях любого дистрибутива. Пришел на сервер, написал apt install tmux, и работаешь

А тащить свой кастомный бинарник из исходников на каждый прод-сервер это путь самурая-одиночки :)

я согласен, но не всё так просто. 😄 в моем собственном репозитории deb/rpm за годы я собрал сотни утилит, которые постоянно пополняю и обновляю. так что у меня это тот же apt/dnf install atch. но об этом я буду писать чуть позже. планирую сделать репозиторий публичным.

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

(Просто смотрю на это с позиции человека, подключенного к машине по се́риалу на 9600)

абсолютно верно! но вы можете выбрать нужный вам размер лога в момент компиляции.

например, можно захардкодить 100кб при сборке или еще меньше.

Всегда считал, что терминал - это как раз то место, где мышь нужна по минимуму. Когда я в нём работаю, у меня обе руки на клавиатуре. Мышь иногда хватаю, чтобы скопировать что-то в терминал или из него. У вас большой упор идёт именно на решение проблем с использованием мыши. Это касается в первую очередь удобства прокрутки лога? Я уже привык нажимать 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

да, старый дедовский метод иногда тоже неплохо помогает 😅

Sign up to leave a comment.

Articles