Навіщо потрібні tmux і screen на VDS
SSH-сесія обривається при розриві з'єднання, перезавантаженні роутера чи відключенні Wi-Fi. Усі процеси, запущені в терміналі, при цьому отримують сигнал HUP і завершуються. Коли це apt upgrade, компіляція ядра чи тривалий бекап бази даних — робота втрачається на середині. tmux і screen вирішують цю проблему: вони запускають окремий сеанс термінала на сервері, який живе незалежно від SSH-з'єднання. Відключились — сесія лишилась працювати. Підключились знову — побачили той самий екран із тими самими запущеними командами.
Обидва інструменти вирішують одне завдання, проте влаштовані по-різному. Розберемо встановлення, базові команди та відмінності одного від іншого.
Встановлення tmux і screen
У більшості дистрибутивів обидва пакети є у стандартних репозиторіях.
apt update
apt install -y tmux screen
Для CentOS, Rocky Linux та AlmaLinux:
dnf install -y tmux screen
Версію перевіряють командою tmux -V та screen --version. Для важких задач на кшталт перенесення бази даних чи ручної збірки пакета інструменти з цієї статті застосовують одразу за першим підключенням до сервера по SSH, до початку роботи.
Основні команди tmux
tmux працює з поняттями сесій, вікон і панелей (panes). Сесію дозволено назвати, а це зручно, коли їх декілька.
| Команда | Дія |
|---|---|
tmux new -s backup | створення сесії з іменем backup |
tmux ls | перелік активних сесій |
tmux attach -t backup | підключення до сесії backup |
Ctrl+b d | відключення від сесії (detach) |
Ctrl+b % | поділ вікна на панелі вертикально |
Ctrl+b " | поділ вікна горизонтально |
tmux kill-session -t backup | завершення сесії |
Комбінація клавіш починається з префікса Ctrl+b, а потім іде окрема клавіша команди. Саме цим tmux відрізняється від screen, де префікс — Ctrl+a.
Основні команди screen
screen старший за tmux і влаштований простіше: одне вікно дорівнює одному терміналу, без вбудованого поділу на панелі в базовій версії.
screen -S backup
screen -ls
screen -r backup
Відключення від сесії — Ctrl+a d, створення нового вікна всередині сесії — Ctrl+a c, перемикання між вікнами — Ctrl+a n (наступне) та Ctrl+a p (попереднє). Іноді за обриву зв'язку сесія лишається у статусі «Attached», і підключення через screen -r видає помилку. Тоді допомагає команда screen -d -r backup, яка примусово від'єднує старе підключення.
Чим tmux відрізняється від screen
Різниця не лише у гарячих клавішах.
- tmux ділить вікно на панелі без додаткових пакетів, screen — лише через модуль чи новіші збірки.
- tmux підтримує конфігураційний файл
~/.tmux.confіз гнучким налаштуванням статус-бару та кольорової схеми. - screen працює майже на будь-якому Unix-сервері без встановлення — часто він уже є у системі за замовчуванням.
- tmux розвивається активніше та зазвичай швидше відновлює layout після відключення по SSH.
Для щоденної роботи на VDS більшість адміністраторів обирають tmux через панелі та зручне налаштування. screen лишається варіантом для мінімальних систем, де зайві пакети ставити не хочеться.
Дії за обриву SSH-з'єднання
Коли з'єднання обірвалось саме, а не через detach, сесія tmux чи screen лишається у фоні — процеси тривають далі. Після відновлення зв'язку достатньо підключитися по SSH та виконати tmux attach чи screen -r. Щоб не плутати сесії, варто одразу надавати їм зрозумілі назви, наприклад tmux new -s deploy замість безіменної сесії з номером.
Для тривалих фонових завдань без інтерактивного виводу краще пасує справжній демон через systemd — для регулярних завдань варто глянути створення unit-файлу для автозапуску служби чи налаштування планувальника cron. tmux і screen потрібні саме для інтерактивної роботи: міграцій, встановлення пакетів, діагностики у реальному часі.
Підсумок: головне про сесії
- tmux і screen зберігають термінальну сесію на сервері за обриву SSH-з'єднання.
- Встановлення:
apt install -y tmux screenчиdnf install -y tmux screen. - У tmux префікс —
Ctrl+b, у screen —Ctrl+a. - Сесії називають під час створення:
tmux new -s ім'я,screen -S ім'я. - Для фонових завдань без інтерактиву застосовують systemd чи cron, а не tmux.