버튼 수집상

[FastAPI] 인트라넷 앱을 위한 크롤링 API 만들기 - 1. screen 세션 본문

TIL - Python

[FastAPI] 인트라넷 앱을 위한 크롤링 API 만들기 - 1. screen 세션

cocokaribou 2024. 2. 13. 15:36

전편 링크

 

[FastAPI] 인트라넷 앱을 위한 API 만들기 - 0. 소개

배경 인트라넷을 앱으로 만드는 내부 프로젝트가 착수됐다. 인트라넷은 정적문서로 만들어진 오래된 웹사이트라, 앱-웹을 연동시키는 API를 새로 만들어야 했다. 웹팀이 API를 만드는 동안, 앱팀

collectingbuttons.tistory.com

개인적으로 헤맸던 부분 위주로 기록한다.

EC2 ubuntu 설정이나, FastAPI의 기본 사용법에 대한 설명은 생략한다.

 

🏃‍♀️EC2에서 screen 세션 돌리기

SSH 세션을 끝내고도 어플리케이션을 계속 실행시키기 위해서 screen 세션을 사용했다.

 

🎮기본 명령어

스크린 세션 리스트 보기

screen -ls

 

백그라운드에서 새로운 세션 실행

screen -d -m python3 main.py

-d : 터미널을 차지하지 않고 백그라운드에서 실행

-m : 새로운 세션 생성

 

세션 재실행

screen -r [session you want to restart]

-r : 백그라운드에서 돌아가는 세션 재실행

 

세션 종료하기

screen -X -S [session you want to kill] quit

-ls 명령어로 종료하려는 세션 아이디를 알아내기

-X : 현재 실행중인 screen 세션에 명령어 전달

-S : 여러 screen 세션 중 하나 특정

 

🤔크롤러를 screen으로 돌려도 되나?

크롬 브라우저 설정을 Dockerfile에 적는게 어려워서 screen으로 돌렸다.

그런데 아직도 둘의 차이나, 사용례를 잘 모르는 것 같았다.

이에 관련해서 찾아본 것들.

 

 

Is there anything inherently wrong with running your applications inside screen sessions rather than VMs or Docker containers?

Answer (1 of 4): There’s nothing inherently wrong with running an application attached to a GNU screen session and I’ve done so many times. However, the question implies a nonexistent equivalence between a virtual machine, operating system container an

www.quora.com

 

어플리케이션을 GNU screen 세션에서 돌리는 건 괜찮습니다. 그러나 가상머신 / OS 컨테이너 / screen 세션, 이것들 사이에는 질문자가 상정하는 것 같은 공통점이 없습니다. 3가지 툴은 근본적으로 다르고 필요에 따라서 같이 쓰일 수도 있습니다.
가상머신과 컨테이너는 모두 해당하는 어플리케이션을 host에서 실행 중인 다른 어플리케이션으로부터 격리시킵니다. GNU screen 및 tmux와 같은 도구들은 격리를 제공하지 않지만 어플리케이션을 터미널에서 분리하고 다시 연결할 수 있게 해주어 오랫동안 실행되는 어플리케이션을 효과적으로 관리할 수 있습니다.

 

 

From the linuxquestions community on Reddit

Explore this post and more from the linuxquestions community

www.reddit.com

Q.
screen을 쓰면 창이 닫혀도 쉘을 실행시키는 것은 이해했는데, 도커와의 차이가 조금 헷갈려요. 도커도 비슷한 역할을 하면서 컨테이너 내에서만 접근할 수 있게 하는 거 아닌가요? 각각의 사용 사례가 어떤 게 좋을까요? 감사합니다!
A.
screen은 터미널 멀티플렉서고(tmux) 도커는 가상머신과 비슷합니다. 둘은 전혀 다릅니다.
Q.
그럼 만약 게임 서버를 돌릴 때는 screen이나 docker 중 어느 것에서 돌려야할까요?
A.
호스트에 설치돼있고 백그라운드에서만 실행하려면 그냥 screen을 쓰세요.

 

728x90