Screen Mini HowTo

From AstroNuWiki
Jump to: navigation, search

Если Вы столкнулись в проблемой запуска программы на удаленной машине в фоновом режиме, то команда screen может Вам помочь. Типичная ситуация: на рабочем месте Вы сидите за ноутбуком, а запускаете программу на удаленном "мощном" компьютере на ночь. При этом, запустив с ноутбука данную процедуру, Вам бы хотелось: унести его домой, а в это время программа работала успешно, на утро Вы бы могли вновь подсоединиться и проверить результат работы.

Как это организовано в screen. Программы запускаемые в screen'ах могут быть отделены - это означает, что они все еще запущены, даже если текущий терминал закрыт. После создания нового терминала могут быть прикреплены к этому терминалу, даже если терминал открывается с другого хоста!

Переходим к описанию screen'а. Необходимо, чтобы пакет screen был установлен на том компьютере, где бы Вы хотели запустить свою программу.

Команды:

1. запуск новой сессии
# screen
после этого вы можете работать, как в обычном терминале 
2. работа при помощи комбинации клавиш:
  а) создать новую сессию в уже запущенной
  "ctrl+a, c"
  б) переключиться на следующую сессию
  "ctrl+a, n"
  в) переключиться на определенную сессию
  "ctrl+a, 1" ; "ctrl+a, 2" ; ...
  г) отделить сессию от текущего терминала (оставить работать в фоновом режиме)
  "ctrl+a, d"
  после этой комбинации клавиш Вы можете смело выйти из терминала (и пойти домой, например),
  запущенная команда будет работать
3. прикрепить запущенную ранее сессию
# screen -r
4. Если запущено больше одной копии screen,  то по команде screen -r, будет выведен список сеансов, типа
  25944.pts-1.nuiZZZ	(Detached)
  12269.pts-2.nuiZZZ	(Detached)
  В этом случае, необходимо выбрать сессию и продолжить. 
  Например, если необходимо продолжить вторую сессию, 
  надо использовать команду 
  #screen -r 12269.pts-2.nuiZZZ
  Или в сокращенном варианте
  #screen -r 2


Приятного и полезного использования screen. Чтобы прочитать больше, смотрите описание к пакету (man screen).

Oleg Samoylov 03:00, 05 December 2007 (MSK)

Позволю себе добавить .screenrc который может быть полезен в повседневной работе. Несколько замечаний:

-вместо "ctrl+a" назначена клавиша <`> (обычно она под esc и над tab),
 так что вместо двух клавиш надо жать одну. Если надо
 набрать <`>, что довольно редко требуется, то надо нажать её два раза подряд.
-внизу терминала зеленым на чёрном статусная строка показывающая
 активные сессии и часы. Переключение между ними: `1, `2, `3 и т.п., или
 `n (next), `p (previous)
- для CERN/Lxplus добавление в конец этого файла строк
    # annoying RedHat/SLC backspace problem
    bindkey ^? stuff ^H
  решает проблему с <backspace> 
- `d => detach session; screen -ls => list of detached session;
  screen -r => reattach session.
  1. .screenrc file based on http://www.dotfiles.com/files/3/463_screenrc.txt
  2. ------------------------------------------------------------------------------
  3. SCREEN SETTINGS
  4. ------------------------------------------------------------------------------
 escape ``                             # use ` instesd of Cntr-A
 vbell on				# default: off
 vbell_msg "   -- Ring, Ring!! --   "	# default: "Wuff,Wuff!!"
 autodetach on				# default: on
 startup_message off			# default: on
 crlf off				# default: off
 defscrollback 1024			# default: 100
 silencewait 15			# default: 30
 msgwait 15
 pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended."
 #change the hardstatus settings to give an window list at the bottom of the
 #screen, with the time and date and with the current window highlighted
 #caption always "%{=}%?%{b}%H %L=%{+b}%?%{y}%-Lw%47L>%?%{g}%n*%f %t %?%{y}%+Lw%?%{b}%-31=%c %l %Y-%m-%d"
 hardstatus alwayslastline
 #hardstatus string '%{= mK}%-Lw%{= KW}%50>%n%f* %t%{= mK}%+Lw%< %{= kG}%-=%D %d %M %Y %c:%s%{-}'
 hardstatus string '%{= kG} %{G}%H %{g}[%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}]%{D} %d/%m %c %{g}'
  1. ------------------------------------------------------------------------------
  2. TERMINAL SETTINGS
  3. ------------------------------------------------------------------------------
 #the vt100 description does not mention "dl". *sigh*
 termcapinfo  vt100 dl=5\E[M
 termcap  vt100* ms:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC
 terminfo vt100* ms:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC
 termcap  xterm hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l
 terminfo xterm hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l
 termcapinfo xterm Z0=\E[?3h:Z1=\E[?3l:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l
 termcapinfo xterm* OL=100
 termcapinfo xterm 'VR=\E[?5h:VN=\E[?5l'
 termcapinfo xterm 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~'
 termcapinfo xterm 'kh=\EOH:kI=\E[2~:kD=\E[3~:kH=\EOF:kP=\E[5~:kN=\E[6~'
 termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
 termcapinfo xterm 'vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l'
 termcapinfo xterm 'XC=K%,%\E(B,[\304,\\\\\326,]\334,{\344,|\366,}\374,~\337'
 termcapinfo xterm* be
 termcapinfo linux C8
  1. ------------------------------------------------------------------------------
  2. SCREEN KEYBINDINGS
  3. ------------------------------------------------------------------------------
  4. Remove some stupid / dangerous key bindings
 bind k
 bind ^k
 bind .
 bind ^\
 bind \\
 bind ^h
 bind h
 bind 'K' kill
 bind 'I' login on
 bind 'O' login off
 bind '}' history
 register [ "\033:se noai\015a"
 register ] "\033:se ai\015a"
 bind ^] paste [.]
 bind = resize =
 bind + resize +3
 bind - resize -3
 bind  ) select 10
 bind  ! select 11
 bind  @ select 12
 bind \# select 13
 bind \$ select 14
 bind  % select 15
 bind \^ select 16
 bind  & select 17
 bind  * select 18
 bind  ( select 19
 #logfile /home/username/logs/screen_%Y-%m-%d_%0c
 bindkey -k F1 prev
 bindkey -k F2 next

User:YuriNefedov

Вообще-то этот файл было бы полезно присоединить "для скачивания", но я не знаю как... Ю

Скачать этот файл можно отсюда

Юр, большое спасибо за файл и объяснения. Чтобы закинуть на wiki какой-нибудь файл надо воспользоваться Upload формой (слева в меню на странице), посмотри в Edit этого файла для того, чтобы узнать как сделать этот файл для скачавания файл.

User:DmitryNaumov 12:50, 31 March 2008 (MSD)