Nohup

Streamlit App Deployment with nohup in Google Compute Engine

개요

개요

  • Streamlit Sample 코드를 작성한 후 배포를 진행한다.
  • VS Code 접속 시 고정 IP를 할당한다.
  • 이 때 터미널이 종료되거나 사용자가 로그아웃해도 계속 실행되도록 nohup을 사용한다.

Nohup의 기본 개념

  • nohup은 “no hang up"의 약자로, 백그라운드에서 다른 명령을 실행하는 데 사용되는 UNIX 명령으로, 로그아웃한 후에도 계속 실행됨.
  • 원격 서버에서 장기간 실행되는 프로세스를 시작하려는 경우 세션 연결이 끊어지거나 터미널이 닫힐 때 프로세스가 종료되지 않도록 하려는 경우에 특히 유용함.
  • foreground에서 명령이나 프로세스를 실행할 때 터미널이나 셸 세션이 종료되면 해당 명령이나 프로세스가 종료될 수 있다.
  • nohup을 사용하면 기본적으로 터미널에서 프로세스를 분리하고 종료(HUP) 신호를 수신하지 못하도록 하여 로그아웃하거나 연결을 끊어도 프로세스가 완료될 때까지 실행할 수 있다.
  • Python에서 nohup을 실행할 때는 다음과 같다.
    • 출력(로그 및 오류)을 특정 파일로 리디렉션하려면 다음 명령을 사용할 수 있다.
    • 이렇게 하면 Streamlit 앱의 표준 출력과 표준 오류가 모두 streamlit.log라는 파일로 리디렉션 된다.
nohup streamlit run my_app.py > streamlit.log 2>&1 &
  • Streamlit 앱을 중지해야 하는 경우 ps 명령을 사용하여 프로세스 ID를 찾은 다음 종료 명령을 사용하면 된다.
ps aux | grep "streamlit run"
  • 그러면 Streamlit과 관련된 프로세스 목록이 표시된다. 삭제하고자 하는 프로세스 ID를 찾아서 종료한다.
kill -9 PROCESS_ID

고정 IP 할당

  • 왼쪽 사이드바 메뉴 > VPC 네트워크 > IP 주소 클릭한다.

Untitled