[첫화면으로]ScreenUtility

마지막으로 [b]

GNU Screen Utility

가장 큰 장점은

1. 기본 튜토리알

[GNU Screen: an introduction and beginner's tutorial || kuro5hin.org]의 내용과, 이 링크글 리플 및 구글링해서 찾은 다른 내용 정리

screen을 실행시키면 그것은 하나의 session이 된다. 한 session 내에서 여러 개의 window를 생성하여 윈도우를 오가며 작업할 수 있다.

터미널을 종료하더라도 세션은 유지된다. 명시적으로 세션을 detach했다가 나중에 다시 attach할 수 있다.

screen 내에서는 터미널의 스크롤 기능(PuTTY의 경우 Shift-PageUp/PageDown)을 쓸 수 없다.(수정 : 쓸 수 있음. 터미널의 스크롤기능 이용 참고) "copy mode"로 들어가서 과거 출력을 스크롤하고, 내용 일부를 복사, 붙여넣기 등을 할 수 있다.

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 - 복사를 내용의 시작 지점과 끝 지점 마크

다른 윈도우에서 컴파일을 할 경우 컴파일이 끝날 때 알려주고, 반대로 IRC를 띄워놨는데 누가 말을 걸면 알려주는 식의 모니터링

그 외:

관련 옵션들:
# 스크롤할 수 있는 과거 라인 수. 기본값은 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
위 명령을 내린 후 키를 입력해서 화면에 출력되는 것을 옮겨 적으면 되는 듯.

2. 둘 이상의 터미널에서 하나의 세션을 공유하여 보기

두 사람이 하나의 계정으로 로긴했다면
  1. 한 명이 자신의 쉘에서 screen 을 실행한다
  2. 다른 사람이 자신의 쉘에서 screen -x 를 실행하면 두 사람의 터미널이 동기화되어 작업을 할 수 있다.
  3. 공동작업을 마친 후에는
    1. exit 명령을 할 경우는 screen 프로세스가 종료된다. (다시 attach 할 수 없으니 주의)
    2. C-a C-d 를 하여 detach 할 수 있다. (다시 attach 가능)

이것은, 혼자서 여러 터미널을 오가면서 작업해야 할 때도 유용하다. 예를 들어 몇 시간씩 걸리는 배치 작업 (FTP 로 화일 받기라던가, 웹 긁어오기 라던가..) 을 할 때 다음과 같은 시나리오가 가능하다.

  1. 학교 컴퓨터에서 작업 서버에 접속하여 screen 을 실행하고 그 screen 위에서 작업을 시작한다.
  2. screen 을 detach 하고 로그아웃하고 터미널을 종료한다. 이 때 screen 과 그 위에서 수행되는 작업은 종료되지 않는다
  3. 이제 집에 와서 작업 서버에 접속해서 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 옵션을 사용한다.

3. 터미널의 스크롤기능 이용

.screenrc 파일에 다음과 같이 설정[1]
termcapinfo xterm* ti@:te@

또한 vim을 screen위에서 띄웠을 때의 마우스휠 사용에 대해서는 ViEditor 페이지 참조

4. 256 컬러 쓰기

PuTTY 로 접속했을 때는 256컬러가 잘 나오는데 그 위에서 screen을 띄우면 16컬러로 나오더라.

요 두 글을 참고해서,

# 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"

색상 테스트 코드는 위 첫번째 링크 안에 소개되어 있는 다음 두 가지를 써서 할 수 있다.

Upload:screen_256.png
(screen 실행 전)

Upload:screen_16.png
(screen 실행 후 16컬러로 나왔을 때. 256컬러로 컴파일한 경우는 TERM 값이 screen-bce라고 나오더라)

5. 참고

기본 사용법 적힌 페이지들:

매뉴얼, 전체 명령어 목록, 설정 파일 샘플:

screen 실행 중에 지나가 버린 화면 스크롤이 안 되어서 당황.

종종 들리는 tmux 란 게 screen 보다 기능이 좋다는 듯? Tmux

6. Comments

색상 테스트 코드 주소가 변경된 것 같아요.
https://github.com/zhengkai/config/blob/master/script/256colors2.pl
-- JellyPo 2014-4-18 9:46 am

감사합니다!
-- Raymundo 2014-4-18 11:05 pm


컴퓨터분류

마지막 편집일: 2019-7-12 1:22 pm (변경사항 [d])
3932 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기