본문 바로가기

IT Tech/Linux

[리눅스] screen utility 사용법





screen은 하나의 콘솔 세션에 여러 개의 가상 스크린을 제공하기 위해 만들어진 유틸리티이지만, 많은 분들이 원격에서 터미널을 열고 작업을 하다가 장애로 통신이 끊길 때 작업중이던 일을 보호하기 위하여 사용합니다. screen은 잘 사용하면 안전하고 보다 효율적인 작업이 가능하므로 콘솔에서 vim 으로 코딩같은 작업을 할 경우 무척 유용하게 사용됩니다.


리눅스 시스템에 screen이 설치 되었다는 가정하에 바로 사용법을 알아보죠..
참고로 저는 screen 타이핑이 불편해서 .bashrc 에 screen 을 'sc'로 alias 해서 사용하고 있습니다.



1. 스크린 생성

$ screen -S <screen name>

$ screen -S test1
--> 스크린을 위한 새로운 쉘이 생성됩니다.


2. 스크린 Detach

$ aaa
//  테스트를 위해서 aaa까지 타이핑 하고 
[Ctrl+a, d] (etach)로 스크린을 빠져 나갑니다.

~~~

[detached]

// --> 스크린을 호출한 콘솔 session
$
통신이 두절되거나 콘솔을 닫아도 자동으로 Detach 됩니다. Detach된 스크린은 없어지지 않고 백그라운드로 남아 있기 때문에 언제든지 콘솔로 접속해서 restore 할 수 있습니다. (4번 참조)



3. 스크린 목록 보기

$ screen -list
There is a screen on:
        19686.test1     (Attached)
1 Socket in /var/run/uscreens/S-sahngoh.







4. 스크린 복구

$ screen -r <screen_name>

$ screen -list
There is a screen on:
        19686.test1     (Detached)
1 Socket in /var/run/uscreens/S-sahngoh.

$ screen -r test1
~~~
$ aaa
// 2번에서 Detach된 상태로 복구되었습니다.




5. 스크린 내에서 추가 쉘 생성하기 및 전환 [☆☆☆]

screen 세션에서 screen을 중복으로 실행하면 스크린 세션에서 shell이 추가로 생성이 됩니다.
단축키 [Ctrl+a, c] (create)를 누르는 효과와 같습니다.
이 기능은 여러개의 콘솔을 열지 않고 관련 있는 작업을 하나의 콘솔에서 스크린속 쉘에서 작업할 때 유용합니다.

스크린 내에 생성된 쉘은 [Ctrl+a, w] (window) 로 확인할 수 있습니다.




위의 그림을 보면 하나의 스크린에 3개의 bash 쉘이 생성되어 있고 현재 보이는- 활성화된-  쉘은 2번 쉘(2*$ bash)임을 알 수 있습니다. 참고로 bash 쉘을 나가려면 일반 콘솔처럼 exit을 하면 됩니다.

이들 쉘간의 전환을 위한 단축키는 다음과 같습니다.
Ctrl+a, n (ext) : 다음 창으로 이동
Ctrl+a, p (revious) : 이전 창으로 이동
Ctrl+a, (0-9) : 활성화 된 번호로 직접 이동
Ctrl+a, a : 바로 이전 창으로 빠르게 이동




6. Attached 된 스크린 강제로 Detache 시키기

$ screen -D <pid>

(10:20:35 AM) $ screen -list
There are screens on:
        27342.bld       (Attached)
        8669.qcte       (Attached)
        30508.prot      (Attached)
3 Sockets in /var/run/uscreens/S-sahngoh.


(10:20:40 AM) $ screen -D 27342
[27342.bld power detached.]

(10:21:27 AM) $ screen -D 8669
[8669.qcte power detached.]

(11:08:05 AM) $ screen -D 30508
[30508.prot power detached.]

(11:08:13 AM) $ screen -list
There are screens on:
        27342.bld       (Detached)
        8669.qcte       (Detached)
        30508.prot      (Detached)





[스크린 단축키 정리]

http://www.pixelbeat.org/lkdb/screen.html