DDD tactical components

Terminal Shortcut tmux cut jq screen split

linux에서 batch 작업을 돌릴 때,
background에서 작업을 실행할 때, 등 screen을 사용한다.

보통 local linux 보다는 ssh로 원격 서버에 들어갈 때 사용한다.

  • local에서는 그냥 터미널 하나 더 띄우면 되니깐..

원격에서는 terminal session이 끊길수도 있고, screen으로 작업을 돌리는게 자업 내역 관리에도 좋은 것 같다.

screen으로 창 분할 등으로도 쓰긴 하는데,
나는 창 분할은 잘 안쓰게 되더라.

screen listup

  • screen -list
  • screen -ls

screen list를 볼 수 있다.
detach/attach 정보, screen 생성 시간, sessionId 도 확인할 수 있다.

screen start as name

  • screen -S {name}

-S option을 주면 해당 name으로 screen을 생성하고 attach(진입)할 수 있다.
이미 있는 이름으로 생성하더라도 새로운 session을 만들어주는데, 이는 sessionId가 다르기 때문에 다른 id 이다.

  • ls로 확인하면 같은 name, 다른 id의 screen list를 확인할 수 있다.

enter screen

  • screen -r {name}

attach하고 detach해서 나온 screen을 다시 들어갈 때 사용한다.
name으로 들어가거나 sessionId로 들어갈 수 있고, 같은 name이 여러 개면 sessionId를 명시해야 한다.

enter screen

  • screen -x {name}

요게 좀 중요하고, 혼자서 쓰면 -r option이랑 거의 다를 바가 없는 부분이다.

-x option은 screen이 attach 상태(다른 사람/다른 terminal)에서 접속해 있어도 들어갈 수 있다.
-r option은 attach이면 들어갈 수 없음.

그리고 session이 공유되어, 여러명이 작업할 때 터미널을 공유해서 볼 수 있다.

  • 이건 terminal을 두 개 띄워두고 같은 session에 두 option을 모두 사용해보면 한 번에 이해할 수 있다.

screen 나오기 (detach)

  • ctrl + a d

screen에 접속해있으면 attach라고 하고, 나오면 detach라고 한다.
detach로 나오는건 screen session은 살아있고 화면만 나오는 것이다.

screen에서 작업을 실행하고 나올 때, 이걸 제일 많이 쓴다.

kill screen

  • screen -X -S {name} kill

하나의 session 죽이기.
session을 exit하지 않고 detach 해서 나오면 screen에서 작업이 끝났더라도 session이 살아있다.
이걸 죽이는데 사용한다.

이것도 동일한 name이 여러 개라면 sessionId를 명시한다.

kill all screen

  • killall screen
  • pkill screen

session을 모두 죽일 때 사용한다.

업무에서 session을 여러 개 활용하기도 하는 편인데, (job1 / job2 / monitoring …)
안쓰는 session이 많아 이걸 사용했다가 불편했던 적이 있다.

실수하기도 쉽고 개인적으로는 안쓰는게 좋은 것 같다.

kill 특정 name들

  • screen -ls | grep Detached|grep {name}|cut -d. -f1|awk '{print $1}' | xargs kill

작업을 하다보면 동일한 name의 여러 session들이 생기기 쉽다.

나 같은 경우는 migration 작업에서 screen -S mig와 같이 여러번 돌리는 경우가 있는데,
이럴 때 session이 쌓인걸 정리할 때 사용한다.