바이오 대표

[Screen] Screen session 이용하기 본문

Programming enviorment

[Screen] Screen session 이용하기

바이오 대표 2023. 6. 1. 11:06

screen

서버를 사용해서 코드를 돌릴때, 내가 연결해논 서버연결이 시간이 오버했거나 창을 실수로 껏다가 서버에서 끊기는 경우가 생긴다. Cashed 가 되있어서 멈춘곳에서부터 코드를 실행하면 정말 좋지만 그렇지 못한 경우에는 처음부터 다시 돌려야 한다. 이를 방지하기 위해서 “screen”을 활용 할 수 있다.

  • 생성: screen -S <session_name>
  • 확인: screen -ls
  • 다시 불러오기: screen -r <session_id>
  • 종료: screen -XS <session-id> kill

 

Linux GNU Screen

요새는 보통 linux를 깔면 pre-installed되어있다. 다음 코드를 이용해서 확인해볼 수 있다.

$ screen --version
##Screen version 4.01.00devel (GNU) 22-May-06

만약에 깔려있지 않을 경우 apt/yum을 이용해 설치 가능하다.

# Ubuntu/Debian
$ apt update
$ apt install screen 

#CentOS/Fedora
$ yum install screen 

 

Session 생성 및 확인

# screen 생성 
$ screen -S <session_name> 
# session 뭐열려있나 확인 (screen 안/밖에서 다 가능하다.)
$ session -ls 

##There are screens on:
##        25064.test      (Detached) # 창이 꺼졌을 때
##        4516.extracteye (Attached)
##2 Sockets in /var/run/screen/S-ybae

해당 예시에서 ‘26064’, ‘4516’ 이 각 session 의 id 이다. 

 

 

Reattach or Detach

# Reattach: 다시 Screen session 으로 들어가기 
$ screen -r <session-id> 

# Detach:원래 linux 환경으로 돌아가기 
$ exit 
$ screen -d <session-id> 
# 혹은 Mac에서는 control(^) + d : screen 이 아예 삭제된다.

이때, 다시 들어가고 싶은 session 은 detached 상태여야 한다. 만약에 다른 창 어딘가에 attached 되있어서 지금 일하고 있는 창에서 screen -r 을  할 수 없다면, screen -d <session-id> 를 이용해서 detach 한 후에 원하는 곳에서 다시 screen -r 해줄 수 있다. 

 

 

Kill/Close a session

# 특정 session 죽이기 
$ screen -XS <session-id> quit 
$ screen -XS <session-id> kill
# 모든 session 죽이기 
$ pkill screen # 하지만 열려있거나 실행되고있는 모든것을 종료함으로 주의해야한다. 

## 정석 ## 
# detached screens 들 죽이기 
$ screen -ls | grep detached | cut -d. -f1 | awk '{print $1}' | xargs kill
# 모든 screens 죽이기 
$ screen -ls | grep pts | cut -d. -f1 | awk '{print $1}' | xargs kill