스크립터를 위한 쉘 필수유틸리티 GNU screen :: 2011/03/19 13:25

스크립트를 많이 짜야하는 사람을 스크립터(scripter)라고 나름 제목 지어보다. 유닉스 환경에서 프로그래밍하다보면 뭔가 많이 한정된 쉘이란 공간에서 있게 되는데, screen을 쓰면 이 공간을 훨씬 효율적으로 이용할 수 있다. 예전에 좀 쓰다가 잊고 있었는데, 며칠전 오랫동안 돌아야 하는 프로세스를 nohup으로 어떻게 만들까요란 나의 트윗에 아하님이 힌트를 줬다. ("screen" 으로 검색하면 온갖 잡다한 것들이 다 나온다. 그때는 "GNU screen"으로 해야)

screen을 써서 할 수 있는 것들
 1. 하나의 터미널에서 여러개의 쉘을 띄워 돌아가며 작업할 수 있다.
 2. 하던 작업(세션)을 그대로 두고, 다른 곳에서 접속해서 사용할 수 있다.
 3. 다른 사람이 다른 터미널에서 세션을 공유해서 쓸 수 있다.

이런 장점들로 인해, 원격 터미널 공유 페어프로그래밍을 하는데 요긴하게 쓰일 수 있으며, 몰랐던 것은 세션을 detached 시켜도 그 안에 프로세스는 계속 돈다는 것이다. 그래서 장시간 도는 프로세스를 세션안에 유지시킬 수 있다. 회사서 작업한 환경을 그대로 detached 시켰다가 집에서 마져 할 수도. (아하님은 screen -r 을 .bash_profile 에 넣어서 항시 스크린으로 들어가도록 하면 좋다고까지) 아, 또 SSH Tunneling으로 뒷구멍을 유지시킬 때도 활용할 수 있을 듯.

해서 요긴하게 써먹으려 좀 알아봤더니 유용한 기능들이 더 있더라.
 1. 화면분할기능 : Ctrl-a Ctrl-S 를 하면 가로로 화면 분할된다 쉘을 가로로 나눠서 쓰니 이리 편할때가. (복귀할때는 Ctrl-a Ctrl-Q) 세로 분할도 있던데 이건 별도로 패치를 해야한다고 함.
 2. 복사붙혀넣기 기능 : Ctrl-a Ctrl-[ 로 vi 모드로 들어가 j,k,l로 돌아다니며 복사후 Ctrl-a Ctrl-] 로 붙혀넣기. (X-Window 등 GUI 가 아닌 환경에서 타 쉘로 복사붙혀넣기 못했던 과거가 흑)
 3. ~/.screenrc 로 환경설정을 해줄 수 있다. (이곳 참고) 아래 설정은 항상 하단에 현재 윈도우가 어딘지 표시함.

startup_message off
hardstatus on
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rW}%n*%t%{-}%+w %= %c ${USER}@%H"

장시간 돌아야 하는 프로세스를 위한 추가 팁
1. django settings 에 DEBUG=True 를 꼭 꺼주자. 그래야 메모리가 안는다.
2. Ctrl-a 를 시작으로 막 사용하다 보면, 먹통이 될 때가 있다. 그 이유는 Ctrl-s 를 눌렀기 때문. 이것은 xoff 명령이다. xon 은 다시Ctrl-q를 눌러줘야 한다.
Trackback Address :: http://yong27.biohackers.net/trackback/370
Name
Password
Homepage
Secret
< PREV #1 ... #7 #8 #9 #10 #11 #12 #13 #14 #15 ... #307  | NEXT >