티스토리 뷰

Study/Linux

[Linux][Tip] Share the terminal with screen

생각많은 소심남 2020. 6. 17. 09:01

 회사에서 실험을 하다보니까, terminal로 출력되는 결과를 계속 확인해야 하는 경우가 생겼다. 물론 항상은 아니지만, 가끔씩이라도 확인하면서 정상적으로 동작하고 있는지 여부를 확인하고자 했다. 보통 이때 많이 사용하는게 screen이라는 것이다.

 screen은 일종의 terminal multiplexer로 일종의 가상 터미널과 같은 것이다. 보통 원격으로든 로컬로든 한 터미널에 한 유저만 할당받아서 사용하는 형식으로 되어 있다. 그래서 일반적으로는 터미널이 종료될때 유저도 로그아웃이 되는 것으로 간주되어 해당 유저가 실행한 프로세스나 어플리케이션도 동시에 종료된다. 물론 이런 것을 막기 위해서 & 연산자를 사용해서 background로 process가 돌게 할 수도 있겠지만 이때도 앞에서 말했던 것처럼 출력되는 결과를 지속적으로 활용하기 어렵다. 

 screen을 쓰게 되면 마치 여러 개의 모니터를 쓰는 것처럼 원하는 프로세스와 터미널을 뗐다가 붙였다가 하는 것이 가능하다. 당연히 이 때 screen내에서 실행된 프로세스는 유저가 강제로 종료시키지 않는한 계속 실행되게 된다. 이렇게 되면 원격으로 실험할 때도 screen으로 생성한 가상 터미널 내에서 실험 스크립트를 돌리면 언제든 로그도 확인할 수 있다. 그런데 가장 기본적인 형태로 screen을 쓰게 되면, 딱 한사람만 가상 터미널에 접속할 수 있다. 이 말은 즉, 한 사람이 가상터미널에 접속하게 되면, 기존에 접속해 있던 사람은 강제로 로그아웃되서 나가게 된다.

  이와 같이 가상 터미널을 여러 명이서 공유하게 하기 위해서는 screen의 실행권한을 조정해주면 된다. sudo 권한으로 다음과 같이 지정해준다.

$ sudo chmod u+s $(which screen)

$ sudo chmod 755 /var/run/screen

기존에 screen으로 실행한 터미널이 있다면 아래 명령어도 한번 더 수행해준다.

$ sudo rm -fr /var/run/screen/*

여기까지 하고 하나가 screen으로 접속되어 있는 상태에서 다른 터미널로 해당 가상 터미널로 접속해보자.

chans@ai:~$ screen -list
There are screens on:
	13624.pts-12.ai	(2020년 06월 15일 14시 41분 02초)	(Attached)
	4457.pts-3.ai	(2020년 06월 09일 09시 39분 08초)	(Attached)
	3987.pts-0.ai	(2020년 06월 09일 09시 38분 33초)	(Detached)

chans@ai:~$ screen -x 13624

이에 대한 결과는 직접 확인해부면 좋을것 같다.

댓글