GNU Screen - 윈디하나의 솔라나라
|
GNU Screen은 단일 터미널을 여러 터미널로 에뮬레이트 해주는
텍스트 기반의 윈도 매니저다. 이런 소프트웨어를 터미널 멀티플렉서(Terminal multiplexer)라고 부르는데, GNU Screen은 그중 가장 오래되었으며 가장 유명하다. GNU Screen에 의해 에뮬레이트 되는 각각의 터미널은
VT100과 호환된다.
windy@wl ~/src # wget https://ftp.gnu.org/gnu/screen/screen-4.9.1.tar.gz windy@wl ~/src # tar xvfz screen-4.9.1.tar.gz windy@wl ~/src # cd screen-4.9.1 windy@wl ~/src/screen-4.9.1 # ./autogen.sh windy@wl ~/src/screen-4.9.1 # ./configure \ CFLAGS="-m64 -fast -D_XOPEN_SOURCE=600 -I/usr/local/include" LDFLAGS="-m64 -L/usr/local/lib -R/usr/local/lib" \ --prefix=/usr/local \ --enable-pam \ --enable-telnet \ --enable-colors256 \ --enable-rxvt_osc windy@wl ~/src/screen-4.9.1 # make windy@wl ~/src/screen-4.9.1 # sudo make install ... termcap entry (./terminfo/screencap) should be installed manually. You may also want to install ./etc/etcscreenrc in /usr/local/etc/screenrc windy@wl ~/src/screen-4.9.1 # sudo cp ./terminfo/screencap /usr/local/share/terminfo/s/ windy@wl ~/src/screen-4.9.1 # sudo mkdir -p /usr/local/etc windy@wl ~/src/screen-4.9.1 # sudo cp ./etc/etcscreenrc /usr/local/etc/screenrc
windy@wl ~ # screen아래와 비슷한 화면으로 전환될 것이다.
GNU Screen version 4.09.00 (GNU) 30-Jan-22 Copyright (c) 2018-2020 Alexander Naumov, Amadeusz Slawinski Copyright (c) 2015-2017 Juergen Weigert, Alexander Naumov, Amadeusz Slawinski Copyright (c) 2010-2014 Juergen Weigert, Sadrul Habib Chowdhury Copyright (c) 2008-2009 Juergen Weigert, Michael Schroeder, Micah Cowan, Sadrul Habib Chowdhury Copyright (c) 1993-2007 Juergen Weigert, Michael Schroeder Copyright (c) 1987 Oliver Laumann This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program (see the file COPYING); if not, see [Press Space for next page; Return to end.]Enter 키를 치면 명령 프롬프트가 나온다. 종료는 Ctrl+d 또는 exit를 입력한다.
windy@wl ~ # Ctrl+D [screen is terminating] windy@wl ~ #
windy@wl ~ # vi ~/.screenrc 1)
startup_message off
hardstatus on
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rW}%n*%t%{-}%+w %= %c ${USER}@%H"
bindkey -k k1 select 0
bindkey -k k2 select 1
bindkey -k k3 select 2
1) 시스템 전체에 적용하려면, /usr/local/etc/screenrc
파일에 저장하자.windy@wl ~ # | 0*bash 00:00 windy@wl가장 마지막줄에 상태바가 추가되었다. 이제는 스크린 화면인지 아닌지 쉽게 확인할 수 있을 것이다. (다음 화면부터는 색상에 대한 정보는 넣지 않겠다) 선택된 화면은 번호와 윈도우 이름 사이에
*로 표시되기 때문에 쉽게 구분할 수 있을 것이다.
screen -t TOP
명령을 실행하면 TOP이란 이름을 가진 윈도우를 생성한 후 포커스가 변경된다.
windy@wl ~ # 0 bash 1*TOP 15:30 windy@wl0번 윈도우로 가려면 Ctrl+a,p 또는 Ctrl+a,0을 입력하면 된다. Ctrl+a,d를 입력하면 아래처럼 스크린에서 떨어진다. 하지만 screen 에서 실행했던 프로그램은 여전히 실행중이다.
windy@wl ~ # 0 bash 1*TOP 15:30 windy@wl [detached] windy@wl ~ #다시 screen 에 접속하려면 아래와 같이 한다.
windy@wl ~ # screen -list There is a screen on: 10680.pts-4.wl (Detached) 1 Socket in /tmp/screens/S-windy. windy@wl ~ # screen -r 10680.pts-4.wl따라서 screen(1)을 nohup(1) 대신 사용할 수 있다.
Ctrl+a,? 도움말 Ctrl+a,c 새로운 윈도우 생성 Ctrl+a,SPACE (다음) 다음 윈도를 선택 (with wraparound). Ctrl+a,Ctrl+a 바로 전에 선택된 윈도우로 스위치 Ctrl+a,0~9 0~9번 윈도우로 스위치 Ctrl+a,w 상태라인에 윈도우 이름 출력 Ctrl+a,a Ctrl+a를 실행중인 프로세스로 보냄 Ctrl+a,s Ctrl+s를 실행중인 프로세스로 보냄 Ctrl+a,q Ctrl+q를 실행중인 프로세스로 보냄 Ctrl+a,l 윈도우 다시 그림 Ctrl+a,W 80 또는 132 컬럼 모드 선택(토글) Ctrl+a,L 윈도우의 utmp-slot. Ctrl+a,z 스크린 대기. 셸에서 Ctrl+Z 를 누른것과 동일 Ctrl+a,x 스크린 잠금. 스크린을 다시 보려면 사용자의 패스워드를 입력해야 함. Ctrl+a,H (로그) 윈도 n의 stdout 을 screenlog.n 으로 로깅한다. Ctrl+a,Ctrl+[ 카피 모드 시작. h,j,k,l로 커서 옮김. SPACE 또는 y로 완료. ESC로 취소 Ctrl+a,Ctrl+] 현재 윈도우의 stdin 으로 붙이기. Ctrl+a,< /tmp/screen-exchange에서 복사 버퍼로 읽음 Ctrl+a,> 복사 버퍼에서 /tmp/screen-exchange으로 씀 Ctrl+a,d screen 접속을 끊음. 이후에 다시 접속할 수 있다. 프로그램은 여전히 실행중이다. Ctrl+a,D,D 접속 종료 후 부모 셸까지 종료 Ctrl+a,K 현재창을 종료하고 실행중인 프로세스에는 SIGHUP 시그널 보냄 Ctrl+a,: 온라인 설정 변경 Ctrl+a,A 현재 윈도우의 타이틀을 변경. Ctrl+a,S 화면 수평 분할 Ctrl+a,| 화면 수직 분할 Ctrl+a,TAB 분할된 화면 토글 Ctrl+a,Q 화면 분할 취소
screen -r [pid.tty.host|tty.host]
: screen 에 접속.screen -S SOCKETNAME
: pid.tty.host 대신 지정한 접속 이름을 가진 소켓을 생성. screen -R [pid.tty.host|tty.sockname]
: 지정된 screen 에 접속. 없는 경우 생성.screen -d [pid.tty.host|tty.sockname]
: 지정된 screen 에 연결된 커넥션에 접속 끊음 명령 보냄. -D 를 사용하면 셸까지 종료한다screen -list, screen -ls, screen -wipe
: 세션 목록을 보여줌. wipe 는 소켓 디렉토리를 청소한 후 목록을 보여줌screen -h 200
: 새 세션의 스크롤 버퍼를 200줄로 설정. 기본값은 100screen -L FILENAME
: 지정한 파일에 screen에서 발생하는 모든 내용을 로깅windy@wl ~ # screen //telnet localhost 80 Trying 127.0.0.1 8080...connected. GET / <!DOCTYPE html> ... </html> [screen is terminating] windy@wl ~ #
windy@wl ~ # screen -S shar1 -t one다른 SSH 커넥션으로 접속해 아래와 같이 명령을 준다.
windy@wl ~ # screen -list There is a screen on: 12236.shar1 (Attached) 1 Socket in /tmp/screens/S-windy. windy@wl ~ # screen -x -r 12236.shar1 -p one양쪽에서 동일하게 데이터를 주고 받을 수 있는 것을 확인할 수 있다. 이 명령은 세션을 공유하는 것이지 윈도우를 공유하는 것이 아니다!
root@wl ~ # su - windy
windy@wl ~ $ screen
Cannot open your terminal '/dev/pts/2' - please check.
windy@wl ~ $ w
...
root pts/2 3시29분오후 w
windy@wl ~ $ ls -al /dev/pts/2
lrwxrwxrwx 1 root root 28 2012년 2월 6일 /dev/pts/2 -> ../../devices/pseudo/pts@0:2
windy@wl ~ $
RSS ATOM XHTML 5 CSS3 |
Copyright © 2004-2024 Jo HoSeok. All rights reserved. |