-
Notifications
You must be signed in to change notification settings - Fork 7
screen
Простой мультиплексор терминала.
-
создать сессию (имя для сессии будет задано автоматически):
screen
-
создать сессию с именем
myjob
(потом можно подключиться к ней, используя это имя):screen -S myjob
-
использовать шелл
/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.
Footer is under construction
Sidebar is under construction