screen - andyceo/documentation GitHub Wiki
Простой мультиплексор терминала.
-
создать сессию (имя для сессии будет задано автоматически):
screen -
создать сессию с именем
myjob(потом можно подключиться к ней, используя это имя):screen -S myjob -
переименовать сессию
fooвbar:screen -S 8890.foo -X sessionname bar -
переименовать сессию в интерактивном режиме (предварительно к ней нужно подключиться,
attach):C-a :sessionname myNewSessionName -
использовать шелл
/bin/shвместо того, что задан в переменной$SHELLвнутри сессии:screen -s /bin/sh -
выйти из сессии в терминал:
Ctrl-a d,Ctrl-a Ctrl-d -
вывести список всех сессий:
screen -ls -
подключиться к сессии по имени
myjob:screen -r myjob -
отсоединиться от сессии
screenсразу после создания:screen -d -
форсировать создание новой сессии
screen, независимо от того, где вызвана командаscreen, внутри сессииscreenили нет:screen -m -
создать новую сессию с именем, запустить в ней команду с аргументами и отсоединиться от сессии (т.е. вернуться в текущий терминал):
screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"` screen -dmS example sudo iotop -a # пример -
предыдущая команда запустит команду не в шелле, т.е. если команда завершится, то завершится и
screen, и все логи пропадут, и нельзя будет присоединиться к сессии и посмотреть вывод. Можно запустить предыдущую команду так:screen -dmS example bash -c 'ping -c 10 ya.ru' # пример запуска команды ping в шелле screen -dmS example bash -c 'ping -c 10 ya.ru; exec bash' # пример запуска команды ping в шелле, сохраняя логи -
можно написать файл
~/.screenrc, в котором будут прописаны открытия сессий и некоторые настройки. Если нужно несколько таких файлов, то можно указать который использовать:screen -c myscreenrc. Примерное содержимое файла:# don't display the copyright page startup_message off # increase scrollback buffer size defscrollback 10000 # create windows screen -t TODO vim TODO.txt chdir src screen -t coding vim main.c screen -t run
Скроллинг с помощью мыши не будет работать внутри screen. Два варианта исправить это:
-
Использовать copy mode:
Ctrl-a Esc, затем мышь/стрелки будут скроллить -
Создать файл настроек
~/.screenrcсо следующим содержимым:cat ~/.screenrc # Enable mouse scrolling and scroll bar history scrolling termcapinfo xterm* ti@:te@Похоже что этот способ будет записывать буфер терминала на диск, что создаст проблемы в случае активного вывода.
Также можно использовать опцию -L, создающую в папке из которой был запущен screen, файл вида screenlog.#, где # это номер для этой сессии, начиная с 0.