2 minute read

[Tips] Ubuntu(Linux) screen 사용법에 관한 포스팅입니다.

개요

결론은 우분투의 터미널에서 오랜 시간 돌아가야하는 작업이 진행중일때, 컴퓨터가 꺼지거나 터미널을 실수로 닫아버린 경우에도 작업은 계속 원활히 동작하도록 하는 것이 목표입니다.

그 방법중에 하나로 screen이라는 도구를 추천받았고, 조금 더 본격적으로 써보기 위해 포스팅하게 되었습니다.

Installation

sudo apt-get install -y screen

How to use

./screenrc

먼저 설치 이후에 약간의 설정을 해주면 더 보기 편하게 쓸 수 있습니다.

# In terminal,
vim ~/.screenrc
# Copy and paste
ck 5000
vbell off
defscrollback 10000
termcapinfo xterm* ti@:te@
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

make screen

screen -S test1

test1 이라는 screen생성하게 됩니다.


여러 창을 사용할 때

저는 보통 하나의 터미널을 크게 4개의 터미널로 분할하여 작업합니다.

이제 생성한 test1이라는 screen을 마치 도커처럼

test1이라는 환경의 4개의 터미널을 다루는 것을 해보겠습니다.

screen -x test1

이러면 test1 screen에 접속하는데,

처음 생성한 screen과 동일한 bash(0 bash)에 들어가게 됩니다.

여기서 새로운 bash를 만드는 것은

ctrl + a + c

bash이동은

ctrl + a + 1 # ctrl + a + 3 이런 식

이런식으로 원하는 bash의 숫자로 이동하면 됩니다.

그러면 아래 사진과 같이 터미널을 구성할 수 있습니다.


Exit

기본적으로 exit명령어를 입력하면 나오긴합니다.

1번 bash에서 exit하면 1번은 꺼지고, 다른 남은 bash로 이동하게 됩니다.

마지막 bash까지 단순히 exit을 입력하면 screen에서 나오게 되고,

screen -list를 통해 확인해보면 screen도 없어지며 종료된 것을 확인할 수 있습니다.

screen을 종료시키지 않고 실행상태 그대로 나오는 방법은

ctrl + a + d

이후 screen -list를 통해 확인해보면 screen은 여전히 남아 있는 것을 확인할 수 있습니다.

Delete

screen -X -S test1 quit

Etc

당장 기본적으로 필요해보이는 명령어만 다뤄봤는데,

더 많은 기능들이 있는 것 같습니다.

더 자세한 것은 더 잘 정리되어있는 포스팅들을 확인하면 도움이 될 것 같습니다.

걱정되는점

로컬에서는 적극적으로 사용하기는 힘들 것 같습니다.

만약 로컬(데스크탑)에서 학습을 돌리고 있다가 컴퓨터가 꺼져버린다면

그건 그냥 학습이고 뭐고 프로세스가 다 종료되겠죠?
(로컬에서는 실수로 터미널을 잘못 종료했을 때 작업을 잃지 않는 것 정도만 기대할 수 있을 것 같습니다.)

서버에서 screen으로 터미널을 구성해놓고 작업할 때 가장 큰 진가를 발휘할 것 같습니다.

발생한 문제

docker에서 환경을 구성해서 작업하는데

docker내에서 screen을 구성하면 이상하게 현재 경로가 안보이는 문제가 있습니다.
(뭔가 세부적인 걸 고치면 해결될 것 같은데 일단 찾아보지는 않았습니다.)


ls, pwd와 같은 명령어로 확인해야 경로나 경로내 파일들을 알 수 있습니다.

로컬과 동일하게 설치하고 세팅했는데, 왜 이런지는 잘 모르겠습니다.

감수하려면 감수할 수 있는 부분인데, 불편할 수도 있을 것 같습니다.

++ 해결방법
여러번 시도해보니, 컨테이너를 들어가서 Screen을 만드는 순서가 아니라

docker 컨테이너를 들어가기 전에 Screen을 만들어 놓고,
컨테이너에 접속해야 올바르게 작동합니다.

📣
포스팅에서 오류나 궁금한 점은 Comments를 작성해 주시면, 많은 도움이 됩니다.💡

Leave a comment