주피터 노트북을 백그라운드에서 실행하는 방법? 단말기 하나를 보관할 필요가 없습니다
주피터 노트북을 백그라운드에서 실행하는 방법? 단말기 하나를 보관할 필요가 없습니다
종종 우리는 노트북을 사용하기 위해 브라우저에서 페이지를 팝업한다. 그러나 서버를 여는 단말기는 그대로 남아 있습니다. 뒤에 서버를 두고 저 터미널을 닫을 수 있는 방법이 있나요?
를 사용하여 프로세스를 백그라운드로 전환할 수 있습니다. 나중에 터미널을 닫을 수 있으며 프로세스는 계속 실행됩니다.
를 사용하는 경우 동일한 기능을 하는 더 짧은 버전을 사용할 수도 있습니다.
프로세스를 중지하려면 프로세스의 PID를 찾은 다음 1234를 방금 찾은 PID로 대체하는 데 사용할 수 있습니다.
설명.
이 플래그는 주피터가 브라우저를 자동으로 열지 않도록 하며, 이 플래그 없이도 작동합니다.
은 현재 실행 중인 셸의 배경에 해당 셸을 배치합니다.
그런 다음 은 현재 실행 중인 셸의 백그라운드에서 작업을 제거하고 사용자가 작업을 닫을 수 있도록 셸과 독립적으로 실행합니다.
버전에서 은 와 동일한 기능을 제공하는 기본 제공 기능입니다.
또는 세션에서 노트북을 시작할 수 있습니다. 오류 메시지 등을 쉽게 확인할 수 있습니다.
Tmux는 Jupyter 노트북을 백그라운드에서 실행하는 데 사용할 수 있는 좋은 옵션입니다.
OS Ubuntu 16.0이 설치된 Google 클라우드 플랫폼의 VM 인스턴스에서 Jupyter 노트북을 실행하고 있습니다. 어디에
- SSH 터미널을 시작해야 합니다
- 그런 다음 명령을 실행합니다. 해당 VM 인스턴스의 포트 번호 5000에서 Jupyter Notebook이 시작됩니다
- 그런 다음 브라우저를 열고 ip_addrees_of_my_instance:port_number(5000)를 입력합니다. 브라우저에서 내 노트북이 열립니다.
이제 이것까지, 모든 것이 좋다. 그러나 SSH 터미널과의 연결이 종료되면 기다려 주십시오. 그러면 주피터 노트북이 즉시 중지되므로 SSH 터미널이 다시 시작되거나 새로운 SSH 터미널에서 다시 실행해야 합니다.
이것을 피하는 것은 매우 좋은 선택이다.
터미널 멀티플렉서() - SSH 터미널이 닫힌 후에도 SSH 세션을 백그라운드에서 실행 상태로 유지합니다:
- SSH 터미널을 시작합니다
- 유형. 동일한 터미널에서 창을 엽니다.
- 여기서 주피터 노트북을 시작하는 명령을 내립니다. 노트북을 엽니다.
이제 SSH 터미널이 닫히거나 종료된 경우 인스턴스에서 노트북을 계속 실행합니다.
연결이 종료된 경우:
- 다시 연결하거나 새 SSH 터미널을 엽니다. 이 Jupyter Server(백그라운드에서 계속 실행됨)를 보려면 command를 입력합니다.
(편집: "노트북"을 "주피터 서버"로 변경)
tmux 세션을 종료합니다:
- 노트북을 닫습니다. 그런 다음 tmux-terminal-window를 입력합니다. (업데이트: 노트북을 닫고 명령을 사용하면 tmux 세션을 종료/중지하지 않고 tmux 세션 창/터미널에서 종료됩니다.)
자세한 내용은 다음 기사를 참조하십시오:
*nix에서 터미널을 닫아 종료되는 것을 피하는 가장 좋은 방법은 프로그램을 실행하는 것입니다(끊지 않음).
서버를 실행한 후 브라우저를 시작하려면 다음 명령을 사용합니다:
nohup jupyter notebook &
브라우저를 열지 않고 서버를 시작하려면 다음 명령을 사용합니다:
nohup jupyter notebook --no-browser &
의 페이지 오른쪽 상단에 있는 [종료]를 사용하여 서버를 종료할 수 있습니다.
는 프로세스의 부모로 init(0)에 저장되므로 단말기가 닫힐 때 "Hang Up" 신호를 수신하지 않습니다. 모든 출력(표준 출력 및 표준 오류)이 프로그램 및 셸 명령으로 모두 존재하는 파일로 리디렉션되므로 자세한 내용을 보려면 페이지를 확인하십시오.
이것은 주피터 노트북 서버를 백그라운드에서 실행할 때 사용할 수 있습니다.
$> nohup jupyter notebook --allow-root > error.log &
정지 노섭 주피터 노트북은 간단합니다.
먼저, 목성의 pid를 구하라:
$> ps -ef| grep jupyter
예: 다음과 같은 출력:
root 11417 2897 2 16:00 pts/0 00:04:29 /path/to/jupyter-notebook
그런 다음 프로세스를 중지합니다:
$> kill -9 11417
PID를 다음과 같이 저장하여 이를 단순화할 수도 있습니다:
$> nohup jupyter notebook --allow-root > error.log & echo $!> pid.txt
즉, 다음을 사용하여 노트북을 중지할 수 있습니다:
$> kill -9 $(cat pid.txt)
주피터 노트북을 중지하는 다른 방법은 노트북 페이지에서 종료하는 것입니다.
를 사용하여 실행할 수 있습니다.
screen -A -m -d -S anyscreenname jupyter notebook --no-browser
화면에서 주피터가 시작되고 화면 명령을 사용하여 화면에 액세스할 수 있습니다.
사실 단독으로는 충분하지 않지만 백엔드는 여전히 화면에 기록됩니다. 네가 필요한 것은, 이것으로부터 인용된 것이다
jupyter notebook > /path/to/somefileforlogging 2>&1 &
원격 시스템의 경우 잘 작동합니다. 그러나 터미널을 닫을 때 로컬 시스템에서는 작동하지 않습니다. 로컬 시스템의 경우 를 사용합니다.
그다지 정교하지는 않지만 일을 마무리할 수 있습니다:
#! /bin/bash
#probably should change this to a case switch
if [ "$1" == "end" ]
then
echo
echo "Shutting Down jupyter-notebook"
killall jupyter-notebook
echo
exit 0
fi
if [ "$1" == "-h" ]
then
echo
echo "To start : jnote <port> [default 8888]"
echo "To end : jnote end"
echo "This help : jnote -h"
echo
exit 0
fi
#cast from string
PORT=$(($1))
RETURN=0
PID=0
if [ "$PORT" == "0" ] || [ "$PORT" == "" ]; then PORT=8888; fi
echo
echo "Starting jupyter-notebook"
#background and headless, set port, allow colab access, capture log, don't open browser yet
nohup jupyter notebook \
--NotebookApp.allow_origin='https://colab.research.google.com' \
--port=$PORT --NotebookApp.port_retries=0 \
--no-browser >~/jnote.log 2>&1 &
RETURN=$?
PID=$!
#Wait for bg process to complete - add as needed
sleep 2
if [ $RETURN == 0 ]
then
echo
echo "Jupyter started on port $PORT and pid $PID"
echo "Goto `cat ~/jnote.log | grep localhost: | grep -v NotebookApp`"
echo
exit 0
else
echo
echo "Jupyter failed to start on port $PORT and pid $PID with return code $RETURN"
echo "see ~/jnote.log"
echo
exit $RETURN
fi
jupyter notebook & >> disown
그 다음 유형을 사용하여 프로세스를 백그라운드로 넣거나 지금 터미널을 닫을 수 있습니다
Jupyter 프로세스를 제어 터미널에서 분리하고 모든 입력 및 출력 데이터를 해당 프로세스에 기록된 데이터를 삭제하는 특수 장치 파일로 보냅니다.
jupyter notebook </dev/null &>/dev/null &
나처럼 게으른 사람들은 가명을 편집하고 만드는 것을 선호할 것이다:
alias jnote='jupyter notebook </dev/null &>/dev/null &'
참조:
사용자 중 한 명이 제안한 대로 를 사용하면 문제가 해결됩니다. 단말기를 닫은 후 커널을 죽인다는 댓글에 대해서는 아마도 당신이 사용하고 있을 것입니다.
iTerm2 소프트웨어를 사용하는 경우 먼저 다음을 설정해야 합니다:
brew shellenv
그런 다음 nohup에서 주피터를 시작합니다:
eval $(/usr/local/bin/brew shellenv)
nohup jupyter notebook &
다음은 터미널 프로세스()에서 분리된 백그라운드()에서 주피터를 실행하는 명령입니다. 브라우저를 열지 않고() 나중에 참조할 수 있도록 파일로 리디렉션되므로 터미널에 로그가 표시되지 않습니다.
jupyter notebook --no-browser &> jupyter_server.log & disown
If you don't wan't to store the logs:
jupyter notebook --no-browser &> /dev/null & disown
Thanks to the other answers this one is built upon: here and there