콘텐츠로 이동

백그라운드 실행

Linux 서버에서 서버를 백그라운드로 계속 실행하는 방법

섹션 제목: “Linux 서버에서 서버를 백그라운드로 계속 실행하는 방법”

Linux의 세션 방식 때문에, 직접 실행한 서버는 SSH 연결이 끊기면 같이 멈춘다. 서버는 백그라운드에서 계속 돌아가야 한다.

screen으로 가상 창을 만들어 그 안에서 서버를 실행한다. 먼저 screen을 설치한다. 터미널에 다음을 입력한다.

시스템에 screen 패키지가 있는지 확인하고, 없으면 설치한다.

Terminal window
apt-get install screen

screen 기본 명령:

Terminal window
screen -ls # 모든 screen 목록 보기
screen -S xxx # xxx라는 가상 창 만들기 (백엔드 서버 이름으로 짓는 것을 추천)
screen -r xxx # xxx 가상 창에 들어가기 (이미 만들어져 있고 아무도 쓰지 않는 screen만 가능)
screen -D xxx # xxx 창을 쓰고 있는 사용자 내보내기
screen -S xxx -X quit # xxx 창 삭제 (screen 안에서 exit를 입력해도 삭제된다)

screen 안에서 서버를 실행하고, Ctrl + A + D를 누르면 원래 창으로 돌아온다.

추천 이유: 백그라운드에서 돌리면서도 서버 콘솔에서 로그를 보고 명령을 입력할 수 있다.

패널을 쓴다. 간단하고 생각할 것 없이 화면으로 관리할 수 있다.

vim으로 mc.service 유닛 파일을 만든다.

Terminal window
vim ~/.config/systemd/user/mc.service

파일 내용은 다음과 같이 작성한다.

[Unit]
Description=Minecraft Server
After=network.target
[Service]
WorkingDirectory=여기에 작업 디렉터리 경로
ExecStart=여기에 실행 명령
ExecStop=/bin/kill -SIGINT $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target

작성이 끝나면 설정을 다시 불러온다.

Terminal window
systemctl daemon-reload

그다음 서버를 시작하고 부팅 시 자동 실행을 설정한다.

Terminal window
systemctl --user start mc.service
systemctl --user enable mc.service

systemctl --user status mc.service로 서비스 상태를 확인할 수 있다.

Arch Wiki의 튜토리얼

장점: 자동 재시작, 부팅 시 자동 실행 등이 된다.

단점: 콘솔에 들어가 명령을 입력할 수 없다.

&: 실행 명령 뒤에 &를 붙인다.

예: ./start.sh &

nohup: 실행 명령 앞에 붙인다.

예: nohup ./start.sh > run.log 2>&1 &

각 부분의 의미: