Как использовать tmux в Linux — горячие клавиши и команды.

Наверное у каждого бывало, что запуская в терминале какую-нибудь длительную команду, в самый неожиданный момент происходит разрыв соединения и в итоге исполнение команды прерывается и нужно начинать все сначала. Или нужно параллельно вести и контролировать исполнение нескольких задач, но не держать открытыми несколько терминалов сразу. В этих и не только случаях на помощь приходит терминальный мультиплексор tmux.

tmux позволяет запускать несколько сессий в рамках одного терминала. Рассмотрим основные команды и горячие клавиши, но для начала убедимся, что программа у нас установлена. На нашем хосте стоит ОС CentOS Stream 9, поэтому используем пакетный менеджер dnf:
dnf install tmux -y

Запустим новую безымянную сессию:
tmux
Откроется чистое окно в котором мы запустим простую команду, которая будет выполняться пока мы ее не прервем:

[root@waky ~]# ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=58 time=42.6 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=58 time=42.4 ms
...

Отключимся от окна текущей tmux сессии нажав одновременно Ctrl+b и затем d.

[root@waky ~]# tmux
[detached (from session 0)]

Посмотрим список открытых сессий:

[root@waky ~]# tmux ls
0: 1 windows (created Thu Feb 20 16:37:53 2025)

Видим в списке нашу сессию под номером 0. Откроем еще одну сессию, но на этот раз зададим ей имя.
tmux new -s namedsession
В новой сессии так же запустим тестовый пинг:

[root@waky ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=59 time=61.8 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=59 time=61.6 ms
...

Снова отключимся от текущей сессии и проверим список:

[root@waky ~]# tmux ls
0: 1 windows (created Thu Feb 20 16:37:53 2025)
namedsession: 1 windows (created Thu Feb 20 16:47:40 2025)

Подключимся к последней сессии и окажемся в сессии namedsession:
tmux a
Так же мы можем подключиться к сессии по ее названию, например:
tmux attach -t namedsession

Нажимаем одновременно Ctrl + b и затем s, перед нами появится список открытых сессий где мы можем перейти между ними.

Выберем из списка первую сессию. Нажмем Ctrl+b и затем c чтобы создать еще одну сессию, прямо из другой сессии. Переключимся между сессиями, нажмем Ctrl+b и n, у нас отроется сессия за номером 0. Нажмем Ctrl+b и p вернемся к предыдущей сессии.

Между сессиями в tmux можно не только переключаться, а можно вывести несколько сессий на одном экране. Нажмем Ctrl + b и %, чтобы разделить экран вертикально.

Если мы хотим разделить экран горизонтально используем Ctrl + b и «

Чтобы переключаться между сессиями на одном экране, нужно нажать Ctrl + b и стрелку в соответствующем направлении. Перейдем таким образом в окно с бегущим пингом и нажмем Ctrl + b и x На вопрос ответим утвердительно y. В оставшейся сессии набираем exit чтобы так же ее закрыть. Проверьте оставшиеся сессии и закройте их.

Команды:
tmux — открыть новую безымянную сессию
tmux new -s имя — открыть новую сессию с соответствующим именем
tmux a — подключиться к последней сессии
tmux attach -t имя — подключиться к сессии с соответствующим именем
tmux ls — список открытых сессий

Горячие клавиши:
Ctrl+b и d — отключиться от сессии
Ctrl+b и c — создать новое окно из сессии
Ctrl+b и n — следующая сессия
Ctrl+b и p — предыдущая сессия
Ctrl+b и цифра — переключение на сессию с соответствующим номером;
Ctrl+b и s — просмотреть список сессий
Ctrl+b и % — вертикальное разделение окна
Ctrl+b и « — горизонтальное разделение окна