ScreenUtility 페이지의 소스 보기
마지막으로 [b]
-- Loading page list... --
내용출력
로그인[l]
Diary
[f]
최근변경내역
[r]
페이지목록[i]
횡설수설[2]
게시판[3]
링크
수정할 수 없습니다: ScreenUtility 는 읽기 전용 페이지입니다.
= GNU Screen Utility = * [http://www.gnu.org/software/screen/ GNU Screen - GNU Project - Free Software Foundation] 가장 큰 장점은 * 작업하다 접속이 끊어져도, 수행 중이던 작업은 여전히 살아 있다. 다시 접속해서 그 스크린에 attach하면 됨. 그러고보면 전화선으로 접속하던 시절에 이걸 잘 익혀뒀으면 정말 좋았을텐데. * 여러 사람이 한 세션을 공유해서 볼 수 있다. 공동 작업을 할 때 유용하게 사용할 수 있다. 터미널계의 원격 데스크탑이랄까. == # 기본 튜토리알 == [http://www.kuro5hin.org/story/2004/3/9/16838/14935 GNU Screen: an introduction and beginner's tutorial || kuro5hin.org]의 내용과, 이 링크글 리플 및 구글링해서 찾은 다른 내용 정리
screen
을 실행시키면 그것은 하나의 ''session''이 된다. 한 ''session'' 내에서 여러 개의 ''window''를 생성하여 윈도우를 오가며 작업할 수 있다. * ''C-a c'' : 윈도우 생성 * ''C-a C-a'' : 직전 윈도우로 이동 * ''C-a n'' , ''C-a p'' : 다음 윈도우, 이전 윈도우로 이동 * ''C-a "'' : 윈도우 리스트를 띄우고 이동할 윈도우 선택 가능 * ''C-a w'' : 하단에 윈도우 리스트를 잠시 보여줌 * ''C-a A'' : 현재 윈도우에 이름을 붙여줌. 리스트에서 알아보기 쉬워진다. 터미널을 종료하더라도 세션은 유지된다. 명시적으로 세션을 ''detach''했다가 나중에 다시 ''attach''할 수 있다. * ''C-a d'' : 세션 detach * ''screen -r'' : 세션 reattach screen 내에서는
터미널의 스크롤 기능(PuTTY의 경우 ''
Shift-PageUp/PageDown
'')을 쓸 수 없다.
('''수정''' : 쓸 수 있음. [[#scroll|터미널의 스크롤기능 이용]] 참고) "copy mode"로 들어가서 과거 출력을 스크롤하고, 내용 일부를 복사, 붙여넣기 등을 할 수 있다. * ''C-a ['' : 카피 모드 진입 * 카피 모드 내의 이동: {{{ h - Move the cursor left by one character j - Move the cursor down by one line k - Move the cursor up by one line l - Move the cursor right by one character 0 - Move to the beginning of the current line $ - Move to the end of the current line. G - Moves to the specified line (defaults to the end of the buffer). C-u - Scrolls a half page up. C-b - Scrolls a full page up. C-d - Scrolls a half page down. C-f - Scrolls the full page down. / - Search forward ? - Search backward space - 복사를 내용의 시작 지점과 끝 지점 마크 }}} * 카피 모드 종료는 ''ESC'' * ''C-a ]'' : 붙여 넣기 다른 윈도우에서 컴파일을 할 경우 컴파일이 끝날 때 알려주고, 반대로 IRC를 띄워놨는데 누가 말을 걸면 알려주는 식의 모니터링 * ''C-a _'' : 해당 윈도우가 30초 동안 조용할 경우 알려줌. 토글 * ''C-a M'' : 해당 윈도우에서 어떤 활동이 있을 경우 알려줌. 토글 그 외: * 현재 윈도우를 닫으려면 윈도우에서 실행하던 마지막 프로그램(특히 쉘)을 종료하면 되고 * ''C-a K'' : 현재 윈도우 kill * ''C-a :kill'' : 위와 동. 묻지도 않음 * ''C-a \'' : 모든 윈도우 kill (주의!) * ''C-a :quit'' : 위와 동. 묻지도 않음 관련 옵션들: {{{#!vim screen # 스크롤할 수 있는 과거 라인 수. 기본값은 100 defscrollback 5000 # 터미널 마지막 줄에, 전체 윈도우 리스트를 표시하고, 현재 활성화된 윈도우에 빨간색 하일라이트 hardstatus lastline hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %C%a " # 각 윈도우마다 다시 캡션을 띄워서 현재 윈도우의 정보를 볼 수 있다 # 내 경우는 현재 윈도우의 작업 디렉토리를 출력하도록 하였음 caption always "%3n %t%? @%u%?%? [%h]%?%=%C%a" # 윈도우를 열 때 모니터링을 기본적으로 켬 defmonitor on defsilence on # alt+PgUp 누르면 곧바로 카피 모드 들어가고, alt+PgUp, alt+PgDown 으로 스크롤 bindkey "^[^[[5~" eval "copy" "stuff ^u" bindkey -m "^[^[[5~" stuff ^u bindkey -m "^[^[[6~" stuff ^d # 윈도우들 간의 이동을 ctrl+좌우 커서키로 bindkey "^[[D" prev bindkey "^[[C" next # 윈도우들 간의 이동을 alt+좌우 커서키로 bindkey "^[^[OD" prev bindkey "^[^[OC" next }}} 키바인딩을 할 때 'alt+왼쪽커서키' 이런 식의 특수키를 어떻게 적어줘야 할 지 몰랐는데, (특히 alt+커서키 조합은 구글링해서 나오는 글들마다 답이 달랐고, 내게는 효과가 없었다) {{{ $ tput smkx; cat; tput rmkx }}} 위 명령을 내린 후 키를 입력해서 화면에 출력되는 것을 옮겨 적으면 되는 듯. == # 둘 이상의 터미널에서 하나의 세션을 공유하여 보기 == 두 사람이 하나의 계정으로 로긴했다면 # 한 명이 자신의 쉘에서 screen 을 실행한다 # 다른 사람이 자신의 쉘에서 screen -x 를 실행하면 두 사람의 터미널이 동기화되어 작업을 할 수 있다. # 공동작업을 마친 후에는 ## exit 명령을 할 경우는 screen 프로세스가 종료된다. (다시 attach 할 수 없으니 주의) ## C-a C-d 를 하여 detach 할 수 있다. (다시 attach 가능) 이것은, 혼자서 여러 터미널을 오가면서 작업해야 할 때도 유용하다. 예를 들어 몇 시간씩 걸리는 배치 작업 (FTP 로 화일 받기라던가, 웹 긁어오기 라던가..) 을 할 때 다음과 같은 시나리오가 가능하다. # 학교 컴퓨터에서 작업 서버에 접속하여 screen 을 실행하고 그 screen 위에서 작업을 시작한다. # screen 을 detach 하고 로그아웃하고 터미널을 종료한다. 이 때 screen 과 그 위에서 수행되는 작업은 종료되지 않는다 # 이제 집에 와서 작업 서버에 접속해서 screen -x 로 attach 하면 위에서 작업하던 그 터미널을 그대로 사용할 수 있다. 두 사람이 서로 다른 계정으로 로긴한 상태에서도 screen 을 공유할 수 있다. 이 때 screen 실행화일에 SetUID 퍼미션이 있어야 한다. 먼저, 유저 bob 은 자신의 ~/.screenrc 를 다음과 같이 설정한다. {{{ multiuser on acladd alice }}} bob 은 다음과 같이 세션이름을 옵션에 주어 screen 을 실행한다. (세션 이름을 주지 않을 수도 있긴 한데, attach 하는 쪽에서 tty 값을 넣어주어야 하니 불편하다) {{{ $ screen -S bobscreen }}} 그 이후, alice 는 다음과 같이 자신의 터미널에서 attach 한다. {{{ $ screen -x -S bob/bobscreen }}} 즉, 세션이름 옵션에 "유저이름/세션이름"의 형식으로 값을 주어야 한다. (이 얘기가 man page 에 없고 info page 구석에 박혀 있어서, 고민을 시작한 지 몇 달 만에 답을 찾게 되었다 -_-; 근데 방금 다시 보니 man page 의 SYNOPSIS 부분에 떡하니 적혀 있더라. ㅠ,.ㅠ) 이 때 alice 는 완전히 bob 과 동일한 권한을 갖는다. 이를 막기 위해서는 aclchg 옵션을 사용한다. == # [#scroll|터미널의 스크롤기능 이용] == .screenrc 파일에 다음과 같이 설정[http://stackoverflow.com/a/1125947/1150133] {{{#!vim screen termcapinfo xterm* ti@:te@ }}} * 이 경우, screen의 카피모드를 쓰지 않고, 평소처럼 PuTTY에서 shift+pgup,pgdown 또는 마우스휠을 사용한 스크롤 기능을 사용할 수 있다. (카피모드와 별개) 또한 vim을 screen위에서 띄웠을 때의 마우스휠 사용에 대해서는 ViEditor 페이지 참조 == # 256 컬러 쓰기 == PuTTY 로 접속했을 때는 256컬러가 잘 나오는데 그 위에서 screen을 띄우면 16컬러로 나오더라. * [http://www.frexx.de/xterm-256-notes/ The 256 color mode of xterm] * [http://stackoverflow.com/questions/1630013/vim-colorschemes-in-screen-putty syntax highlighting - VIM Colorschemes in Screen & PuTTy? - Stack Overflow] 요 두 글을 참고해서, * screen 을 다시 컴파일함. 이 때 configure 를 실행할 때 옵션으로
--enable-colors256
을 명시해야 한다. * .screenrc 에는 다음과 같이 적어줌 {{{#!vim screen # allow bold colors - necessary for some reason attrcolor b ".I" # tell screen how to set colors. AB = background, AF=foreground termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm' # erase background with current bg color defbce "on" }}} 색상 테스트 코드는 위 첫번째 링크 안에 소개되어 있는 다음 두 가지를 써서 할 수 있다. * http://www.frexx.de/xterm-256-notes/data/xterm-colortest - 깨졌음 * http://www.frexx.de/xterm-256-notes/data/256colors2.pl - 깨졌음 * https://github.com/zhengkai/config/blob/master/script/256colors2.pl Upload:screen_256.png \\ (screen 실행 전) Upload:screen_16.png \\ (screen 실행 후 16컬러로 나왔을 때. 256컬러로 컴파일한 경우는 TERM 값이
screen-bce
라고 나오더라) == # 참고 == 기본 사용법 적힌 페이지들: * [http://kldp.org/node/18744 screen 기본 사용법 - 1 | KLDP] [http://kldp.org/node/18767 screen 기본 사용법 - 2 | KLDP] * [http://sahngoh.tistory.com/345 screen utility 사용법 :: SahngOh's MindRoom] * [http://m.solanara.net/solanara/screen GNU Screen - 윈디하나의 솔라나라] * [http://aero2blog.blogspot.com/2010/11/screen-session.html aero's blog: screen session에 이름붙여 사용하기] 매뉴얼, 전체 명령어 목록, 설정 파일 샘플: * [http://www.gnu.org/software/screen/manual/screen.html Screen User's Manual] * [http://arundelo.livejournal.com/390.html arundelo: GNU Screen cheat-sheet] * [http://www.softpanorama.org/Utilities/Screen/screenrc_examples.shtml .screenrc examples] screen 실행 중에 지나가 버린 화면 스크롤이 안 되어서 당황. * [http://www.samsarin.com/blog/2007/03/11/gnu-screen-working-with-the-scrollback-buffer/ GNU Screen: Working with the Scrollback Buffer — Samsarin] * [http://www.saltycrane.com/blog/2008/01/how-to-scroll-in-gnu-screen/ How to scroll in GNU Screen « SaltyCrane Blog] * [http://www.linuxscrew.com/2008/11/14/faq-how-to-scrollback-in-gnu-screen/ FAQ: How to scrollback in GNU SCREEN? - Linux * Screw] 종종 들리는 tmux 란 게 screen 보다 기능이 좋다는 듯? [[Tmux]] == # Comments == 색상 테스트 코드 주소가 변경된 것 같아요. \\ https://github.com/zhengkai/config/blob/master/script/256colors2.pl
: 감사합니다!
---- [[컴퓨터분류]]
ScreenUtility
페이지로 돌아가기 |
다른 수정본 보기