본문으로 건너뛰기
← 가이드 목록

창을 닫아도 프로그램 계속 돌리기 (screen·tmux)

SSH 창을 닫으면 그 안에서 실행한 프로그램도 함께 꺼집니다. screen이나 tmux는 서버 안에 "가상 창"을 만들어서, SSH 연결을 끊어도 프로그램이 계속 돌아가게 해줍니다. 둘 중 하나만 익히면 됩니다.

디스코드 봇이나 웹 앱처럼 항상 켜져 있어야 하고, 서버가 재부팅돼도 자동으로 다시 켜져야 하는 프로그램은 pm2나 systemd가 더 알맞습니다. (디스코드 봇 24시간 호스팅하기 (discord.js·discord.py), 내가 만든 웹 앱 서버에 올리기) screen·tmux는 콘솔에 직접 명령어를 입력해야 하는 게임 서버나, 오래 걸리는 작업에 좋습니다.

screen

sudo apt install -y screen
screen -S work          # 'work'라는 이름의 창을 만들고 들어갑니다

이 창 안에서 원하는 프로그램을 실행합니다.

하고 싶은 것방법
프로그램은 켜둔 채 빠져나오기Ctrl + A를 누른 뒤 D
다시 들어가기screen -r work
만들어둔 창 목록screen -ls
창 완전히 닫기창 안에서 exit
위로 스크롤Ctrl + A를 누른 뒤 Esc, 방향키로 이동, Esc로 끝내기

screen -r을 했는데 (Attached)라며 들어가지지 않는다면, 이전 SSH 연결이 아직 붙잡고 있는 것입니다. screen -d -r work로 들어가면 됩니다.

tmux

sudo apt install -y tmux
tmux new -s work
하고 싶은 것방법
프로그램은 켜둔 채 빠져나오기Ctrl + B를 누른 뒤 D
다시 들어가기tmux attach -t work
만들어둔 창 목록tmux ls
창 완전히 닫기창 안에서 exit
위로 스크롤Ctrl + B를 누른 뒤 [, 방향키로 이동, q로 끝내기

주의할 점

  • 빠져나올 때 Ctrl + C를 누르면 프로그램이 꺼집니다. 꼭 Ctrl + A, D(screen) 또는 Ctrl + B, D(tmux)로 빠져나오세요.
  • 서버가 재부팅되면 screen·tmux 안의 프로그램은 모두 꺼집니다. 재부팅 후에도 자동으로 켜지게 하려면 cron의 @reboot이나 pm2·systemd를 사용하세요.
  • 마인크래프트 서버를 screen으로 돌리는 방법은 마인크래프트 서버 만들기 (Java 에디션, Paper·바닐라)에도 나와 있습니다.

해결되지 않는 문제가 있다면 고객센터로 문의해주세요.