Для того, чтобы не открывать несколько ssh сессий, но иметь возможность разделять задачи, используя возможности терминала на полную существует менеджер окон терминала — утилита screen. Своего рода это более продвинутое решение предустановленных команд jobs, fg, bg, когда добавив после команды & мы отправляем команду в фоновые задачи. Однако, это не всегда удобно, в тех случаях, когда команды выбрасывают что-либо в stdout и нам нужно видеть этот вывод в терминале, причем по отдельности, а не так, что венегрет из выводов разных команд просто засрет одно и то же окно терминала.
Для начала устанавливаем утилитку, поскольку она не предустановлена:
apt install screen
Теперь основные команды screen
- screen — создаёт новую сессию
- screen -S sessname — создаёт новую сессию с нашим названием
- screen -ls — просмотр списка сессий
- screen -r 44444 — вернуться в сессию по её id
- screen -r sessname — вернуться в сессию по её названию
Работа в сессии осуществляется при помощи клавиш управления:
- Ctrl + a и c — создаёт новое окно
- Ctrl + a и w — просмотр списка окон
- Ctrl + a и номер окна — переход в окно с соответствующим номером
- Ctrl + a и " — просмотр окон и перемещение по ним с помощью стрелок вверх — вниз
- Ctrl + a и n — переход в следующее окно
- Ctrl + a и p — переход в предыдущее окно
- Ctrl + a и S — разделение окна по горизонтали
- Ctrl + a и | — разделение окна по вертикали
- Ctrl + a и Tab — перемещение по разделённым окнам
- Ctrl + a и X — скрыть текущее окно
- Ctrl + a и Q — скрыть все кроме текущего
- Ctrl + a и A — переименовать окно
- Ctrl + a и \ — закрыть все окна и прекратить сессию
- Ctrl + a и k — закрыть текущее окно
- Ctrl + a и d — покинуть сессию(с возможностью возврата командой screen -r …)
- Ctrl + a и ? — посмотреть весь список горячих клавиш
Весь синтаксис, опции и аргументы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | Использование: screen [-opts] [cmd [args]] или: screen -r [host.tty] Параметры: -4 Разрешить имена хостов только для адресов IPv4. -6 Разрешить имена хостов только для адресов IPv6. -a Заставить все возможности в termcap каждого окна. -A - [r | R] Адаптировать все окна к новой ширине и высоте дисплея. -c файл Чтение файла конфигурации вместо .screenrc. -d (-r) Отключить запущенный экран в другом месте (и установить его здесь). -dmS name Start as daemon: сеанс экрана в отдельном режиме. -D (-r) Отключить и выйти из системы удаленно (и подключить здесь). -D -RR Делать все, что нужно, чтобы получить сеанс экрана. -e xy Изменить символы команды. -f Управление потоком включено, -fn = выключено, -fa = авто. -h линии Устанавливает размер буфера истории прокрутки. -i Прерывать вывод раньше, когда управление потоком включено. -l Режим входа включен (обновление /var/run/utmp), -ln = выключен. -ls [матч] или -list Ничего не делать, просто перечислите наш SockDir [на возможные совпадения]. -L [файл] Включить ведение журнала вывода. Установите имя файла журнала. -m игнорировать переменную $ STY, создать новый сеанс экрана. -O Выберите оптимальный выход, а не точную эмуляцию vt100. -p window Предварительно выбрать названное окно, если оно существует. -q Тихий запуск. Выход с ненулевым кодом возврата в случае неудачи. -Q Команды отправят ответ на стандартный вывод процесса запроса. -r [сеанс] Повторно подключиться к отдельному процессу экрана. -R Повторно подключите, если возможно, иначе начните новый сеанс. -s Оболочка для выполнения вместо $ SHELL. -S sockname Назовите этот сеанс <pid> .sockname вместо <pid>. <Tty>. <Host>. -t заголовок Установить заголовок. (имя окна). -T термин Использовать термин как $ TERM для окон, а не как «экран». -U Скажите экран для использования кодировки UTF-8. -v Распечатать "Версия экрана 4.05.00 (GNU) 10-Dec-16". -wipe [match] Ничего не делать, просто очистить SockDir [на возможные совпадения]. -x Прикрепить к неотсоединенному экрану. (Режим мультидисплея). -X Выполнить <cmd> как экранную команду в указанном сеансе. |