2010/11/08

screen session에 이름붙여 사용하기

UNIX에서 작업하다 보면 어떤 작업을 그대로 놔두고 로그아웃 했다가 나중에 다시 들어와서 보려면 가상 터미널 프로그램인 screen을 종종 사용하게 된다.

터미널에서 screen 명령을 내리면 새로운 세션이 생성되어서 들어가고 이것을 백그라운드?상태로 떼어내려면 ctrl+a를 누른후 d키를 누르면 원래 터미널로 돌아온다. 그리고 다시 떼어낸 특정 screen session에 들어가려면 screen -ls 명령을 내린후 세션넘버를 찾아서 screen -r 명령을 통해서 다시 진입한다.

aero@host:~$ screen -ls
There are screens on:
        7295.pts-0.sweetpea     (2010년 11월 08일 13시 56분 14초)       (Detached)
        7271.pts-0.sweetpea     (2010년 11월 08일 13시 55분 35초)       (Detached)
2 Sockets in /var/run/screen/S-aero.

aero@host:~$ screen -r 7271

하지만 이렇게 하면 어느 세션에 어떤 작업을 하는지 나중에 헷갈릴 수 가 있는데 세션번호 대신에 특정 의미있는 단어들을 세션이름으로 지정할 수 있으면 편리할 것이다.그렇게 하려면 다음 처럼 screen -S 세션이름 명령으로 세션이름을 지정해서 새로운 세션을 지정하면 된다.


aero@host:~$ screen -S DB
[detached from 7328.DB]
aero@host:~$ screen -S WEB
[detached from 7347.WEB]
aero@host:~$ screen -ls
There are screens on:
        7347.WEB        (2010년 11월 08일 14시 00분 33초)       (Detached)
        7328.DB (2010년 11월 08일 14시 00분 23초)       (Detached)
2 Sockets in /var/run/screen/S-aero.
aero@host:~$ screen -r DB

이제 -r 옵션에 세션이름을 지정해서 해당세션을 복구할 수 있다.

그러면 이미 떠있는 세션이름을 바꿀려면 어떻게 해야 할까?
방법은 두가지가 있다.

첫번째 방법은 해당 screen session에 들어간 다음 수동으로 ctrl+a 를 누른후 :sessionname 새로운세션이름 을 써서 바꾸는 방법이며 두번째 방법은 아래처럼 screen -ls에서 세션번호나 세션이름을 알아낸 다음처럼 -S 옵션으로 해당 세션번호나 이름을 지정하고 해당 세션에 명령을 날리는 -X 옵션으로 sessionname 새로운세션이름 수동으로 하던 명령을 날리는 것이다.

aero@host:~$ screen -ls
There is a screen on:
        7374.pts-0.sweetpea     (2010년 11월 08일 14시 03분 47초)       (Attached)
1 Socket in /var/run/screen/S-aero.

aero@host:~$ screen -S 7374 -X sessionname aero
aero@host:~$ screen -ls
There is a screen on:
        7374.aero       (2010년 11월 08일 14시 03분 47초)       (Detached)
1 Socket in /var/run/screen/S-aero.

댓글 없음:

댓글 쓰기