Linux, BSD: использование screen

 

  • Хорошая шапаргалка по screen
  • Статья по tmux
  • (screen, tmux) У screen есть мощные альтернативы (напр. tmux, Byobu), но их нужно устанавливать, а screen часто бай-дефолт установлен в системе (есть даже на MacOS!). Почему стоит использовать tmux вместо screen:
    • screen deprecated, по крайней мере для RHEL-based систем
    • в tmux есть возможность одновременного подключения нескольких человек к одной сессии
    • в tmux сохраняется разбивка (layout) по окнам по умолчанию, не нужно ничего дополнительно вводить
  • https://access.redhat.com/solutions/4136481
    After careful consideration, the decision was made to deprecate the screen package and instead recommend the tmux package.
    Screen is deprecated and I believe no longer included in 8. Use tmux.
    But screen (if necessary) available in EPEL for CentOS 8.
  • (Screen, tmux) У сессий screen/tmux есть существенное (для кого то единственно значимое) преимущество по сравнению с “обычными ssh-сессиями” (звучит криво, но это user experience):
    • независимость от активности ssh-сессии по причине отключения хоста/проблем в сети между сервером и хостом/etc (хотя только для задачи отвязки shell от ssh сессии проще использовать nohup, mosh, atd now с игнорированием SIGHUP для процесса)
    • возможность подключения к сессии без привязки к ssh-сессии
      • на работе поставил скрипт, а из дома, открыв окно, посмотрел результат
      • в учебных задачах подключился к сессии студента

 


screen
в основном используют для создания нескольких сессий, в том числе на одном экране с использованием split функционала (смотри ниже) и быстрого переключения между ними (по сути аналог tab’ов в secureCRT).

 

 

Commands

screen –ls – просмотр сессий

screen –S |NAME|– создание сессии с указанном именем и заход в нее

Ctrl-a d или screen -d – выход из сессии без отключения сессии по имени (если одна то без аргументов, если несколько – по имени (если уникально) или по ID

Ctrl-a ESC – заход в copy mode. Может помочь для просмотра текста который не помещается на один экран в screen. Заходим в copy mode, далее перемещаемся используя стрелки или ctrl-b/f для навигации вверх/вниз.

Ctrl-a a – как переместиться в начало строки в screen вместо “простого” Ctrl-a.

screenr – возобновление (resume) созданной сессии (если одна то без аргументов, если несколько – по имени (если уникально, причем можно по началу названия только) или по ID

echo $STY – смотрим в каком screen мы находимся

exit – выход из сессии (экрана) и его полное отключение (каждый nested потребует дополнительного exit)

Nested Screen

Внутри одной screen сессии можно создать еще сессии, тем самым породив nested screen. Такое создание имеет свои плюсы:

Ctrl-a c – можно создавать nested screen сочетанием клавиш, а не только через sreen -S

Ctrl-a Ctrl-a – можно перемещаться между nested screen сочетанием клавиш (аналог alt+tab Windows)

Ctrl-a ” – можно посмотреть список nested screen, а не только через echo $STY

SPLIT SCREEN

Split работает путем создания nested сессии в отдельном окне, поэтому все команды, которые работают для nested сессий (создание сессий, переключение между ними, просмотр сессий) выше работают и тут.

  • Ctrl-a then| – split вертикально (vertically)
  • Ctrl-a then S (uppercase ‘s’) – split горизонтально (horizontally)
  • Ctrl-a c – запуск shell в созданном окне (create a new window, start a shell)
  • Ctrl-a :layout save default – сохранение layout как default, так же можно сохранить в файл (save layout as default, possible way also to file)
  • Ctrl-a then Q (uppercase ‘q’) – unsplit
  • Ctrl-a tab – переключение от одного окна на другое (to switch from one to the other)

Leave a Reply