로컬에서 서버 백그라운드로 돌리기! nohub과 Screen

lezsuuu·2023년 8월 22일
0

TIL

목록 보기
40/42
post-thumbnail

업로드중..

프론트, 백 동시에 로컬에서 개발하려면 백 서버를 백그라운드로 돌리고 싶어진다. 그래서 어떤 방법이 있나 찾다가 screen이라는 게 있다는 걸 처음 알았다. nohub은 예전에 써 본 기억이 있는데, 무슨 차이가 있을까?

nohub

nohup [commend] &

위 명령을 실행하면 서버가 백그라운드에서 실행되며, 터미널을 닫아도 서버는 계속 동작한다.

ps -ef | grep

종료하기 위해서는 PID를 찾아서 kill 하면 된다.

Screen

또는 screen 명령을 사용하여 백엔드 서버를 백그라운드에서 실행하고 필요할 때 다시 연결할 수 있다. 리눅스나 맥 등 unix os에서 작동한다.

Screen 사용 방법

  1. 새로운 스크린 세션 시작

    screen -S backend
  2. 스크린 세션에서 서버 실행

    python manage.py runserver
  3. 스크린 세션에서 나오기 (세션 유지됨)
    Ctrl + A 입력 후 d 또는 Ctrl+d

  4. 스크린 세션 다시 연결

    screen -r backend
  5. 스크린 세션 종료:

    exit

이 외에도 screen에는 더 다양한 기능들이 있다.

두 명령어를 비교하자면...

  • nohup이 백그라운드에서 프로세스를 실행하면서 터미널 세션이 종료되어도 유지할 수 있게 해주는 도구다. 명령어 자체가 'no hang up'의 줄임말이다. 참 직관적..ㅎㅎ
  • nohup은 단순히 종료 시 쉘이 SIGHUP을 통해 하위 프로세스를 종료하는 것을 방지하는 원리다.
  • 반면screen은 terminal multiplexer로서 가상의 터미널이 하위 프로세스로 생성돼 여러 작업을 관리하고 유지할 수 있게 하는 도구다.
  • 단순히 백그라운드에서 서버 돌리면서 테스트할 용도라면 둘 다 가능하다.
  • 일회성으로 사용하기에는 nohup이 간단하고 쉽다.
  • screen은 원격 서버 관리나 장기 실행 작업에 적합하다.
  • screen은 실시간 로그를 확인할 수 있다.
  • 여러 터미널을 사용하면서 왔다 갔다 작업하려면 screen이 더 낫다.
  • 두 명령어로 테스트용 서버를 실행할 때, 성능상의 차이는 무의미한 수준이다.
profile
돌고 돌아 벨로그

0개의 댓글