Tools/주피터노트북

nohup으로 jupyter notebook 터미널 창 닫혀도 접속하기( 세션 끊김,백그라운드 실행)

버터젤리 2023. 11. 21. 17:53

 

STEP 01. nohup설치하기

nohup은  Linux 기본으로 제공되므로, 별도로 설치할 필요가 없습니다.

설치확인 명령어 : 

nohup --version

 

 

 

STEP 02  nohup으로 Jupyter notebook 켜놓기

실행하는 명령어는 간단하다

nohup [주피터 실행 명령어]

 

Tip:

회사 컴퓨터로 실행하고 집에서 접속해서 사용하고 싶다. → 외부로 접속할 수 있도록  IP와 외부 포트를 설정해야함.(여기선 생략, 가능하다는 것만 알아두자)

아는사람은 아래와 같이 실행하면 된다. 

nohup jupyter notebook --ip=0.0.0.0 --port=[외부포트] --no-browser --NotebookApp.token=[토큰값]

 

  • ip=0.0.0.0   : 외부 IP 넣는거 아님. 누구라도 0.0.0.0으로 입력하는게 맞음 
  • [토큰값] -- 브라우저로 jupyter notebook 접속시 토큰값을 입력해야 하는데 대부분 abcde29357%125412@#%1$!@%d 이런 형태라서 기억하기 쉬운 비밀번호라고 생각하면 된다. 

 

실행 후에는 아무 결과값이 출력되지 않으니 그냥 터미널창을 닫아주면 된다. 

하지만 우린 잘 실행되고 있는지 궁금하니까,

다른 터미널창을 켜고 아래 명령어로 확인해보자 

ps aux | grep jupyter-notebook

 

 

STEP 03  크롬으로 Jupyter notebook 접속하기

이제 주피터 노트북은 터미널 창을 닫아도 계속 돌아가고 있다.

인터넷 브라우저에 외부IP, 외부접속포트 입력하고 들어가면 Jupyter notebook 창이 뜬다.

ex) 

외부IP : 11.11.11.111

외부포트 : 5555 일때

 

http://11.11.11.111:5555

입력하면 접속됨

안되면 실행 안된거입니다.

 

 

STEP 04  nohup 으로 돌아가고 있는 Jupyter notebook 끄기

Jupyter notebook을 꺼야 할 때가 있다.

가상환경을 바꿔줘야 할 때는 끄고 다시 켜야하는 번거로움이 있다.

어쨋든 끄는 방법은 아래와 같다.

(base) oem@oem-X299-WU8:~$ ps aux | grep jupyter-notebook
user      22222  0.1  0.1  12345   1234 pts/2    S+   17:28   0:00 grep --color=auto jupyter-notebook
user      33333  0.1  0.1 123456 124256 ?        Sl   2:16    /home/user/anaconda3/envs/[가상환경명]/bin/python /home/user/anaconda3/envs/[가상환경명]/bin/jupyter-notebook --ip=0.0.0.0 --port=[외부포트] --no-browser --NotebookApp.token=[토큰명]
(base) oem@oem-X299-WU8:~$ kill 33333

.

 

여기서 PID는 2222, 3333  Process ID 의 약자이다.

주의할점은 2222는 끄면 안된다. 아마도 기본 jupyter notebook 실행 툴인듯하다.

저걸 껏다가 재시작을 했었나 재설치 했었나? 그랬다.

구분하는 방법은 뒤에 디렉토리 주소에 가상환경 명으로 구분할 수 있다. 

내가 실행할때 가상환경명은 알고 있으니 말이다.

 

이렇게 끄고나서 가상환경을 바꾸고 다시  nohup으로 실행시켜주면 된다.

 

명령어 풀이

  1. ps: "Process Status"의 약자로, 시스템에서 실행 중인 프로세스의 정보를 표시하는 명령어입니다.
  2. aux: ps 명령어의 옵션으로, 다음과 같은 정보를 표시하도록 지정합니다:
    • a: 모든 사용자의 프로세스를 표시합니다.
    • u: 상세한 사용자 정보를 포함하여 출력합니다.
    • x: 터미널과 관련 없이 모든 프로세스를 표시합니다.
  3.  | : 파이프(pipe) 기호로, 명령어를 중복으로 사용할 때 연결시켜주는 접속사.
  4. grep: 문자열 검색 명령어로, 주어진 문자열을 포함하는 행을 찾습니다.
  5. jupyter-notebook: 검색하려는 문자열입니다. "jupyter-notebook"이라는 문자열을 포함한 프로세스를 찾습니다.