Расскажу про один старый неочевидный трюк в терминале.
А на самом деле это вопрос решаемый. Есть небольшая утилита reptyr, которая может без остановки перенести процесс в новую сессию. Причём она в этой сессии продолжит свой вывод в терминал. Утилита живёт в стандартных репах, так что не нужно ничего со стороны скачивать:
# apt install reptyr
Нагляднее и проще всего показать работу reptyr на примере top или htop. Запускаем в обычной консоли top.
# top
Отправляем процесс в фон и там запускаем:
Нажимаем CTRL-Z
# bg
Проверяем, как процесс работает в фоне:
# jobs -l
[1]+ 7972 Stopped (signal) top
Увидели заодно его pid - 7972. Отвязываем процесс от текущей сессии:
# disown top
Теперь запускаем новую сессию сразу же с tmux. Заходим в неё и там запускаем:
# reptyr 7972
Открыли в новой сессии с tmux всё тот же процесс top.
Вспомнил про эту тему, когда начал работать с opencode. По какой-то причине у меня периодически отлетает сессия с запущенным агентом, работающая в VPS в локалке. Со связью проблем нет. Не знаю, в чём причина. Первое время забывал его запускать в tmux и терял в какой-то момент диалог. Сейчас уже приучил себя запускать длинные сессии в tmux.
К сожалению, reptyr по какой-то причине сессию с opencode не может восстановить. Отправляю в background, отцепляю от сессии, запускаю в новой через reptyr, но всё виснет. Интерфейс opencode не появляется. Там навороченная и активная псевдографика. Наверное в этом дело. Хотя тот же mc без проблем из сессии в сессию переходит.
#bash #terminal