창을 닫아도 프로그램 계속 돌리기 (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·바닐라)에도 나와 있습니다.