VSCodeのRemote SSHでJupyter Notebookを動かしていると、サーバー側が元気でもこちらの画面を閉じるとカーネルが死んでまう。それを防ぐ。
TL;DR
- Remote SSHでSSH接続する
- (Optional)
pip
,conda
等でenv
に入る - (Optional) Jupyterのサーバーがない場合は立てる
- Jupyter Connectionを選択
- カーネルを選択
- 安心して寝落ちる
説明
クライアント側
macOS Monterey, VSCode 1.74.2
サーバー側
Ubuntu, 22.04 LTS
1. Remote SSHでSSH接続する
VSCodeの拡張機能Remote SSHを使う。
2. (Optional) pip
, conda
等でenv
に入る
カーネルのenv
になる。
3. (Optional) Jupyterのサーバーがない場合は立てる
UNIX系なら、端末を閉じてもログアウトしても処理を続けるnohup
コマンドを使う。
$ nohup jupyter notebook &
nohup.out
というファイルができているので、そのファイルの一番下のURLをコピーする。
To access the notebook, open this file in a browser:
file:///home/hogehoge
Or copy and paste one of these URLs:
http://localhost:8871/?token=hogehoge ## <-これをコピー
or http://127.0.0.1:8871/?token=hogehoge ## <-これでも良い
nohup
その他
jobs
で現在処理中のプロセスが表示できる。
$ jobs
[1] + running nohup jupyter notebook
fg id
(zshならfg %id
)でジョブをフォアグラウンドに持ってこれる。ジョブを切りたい場合はフォアグラウンドにしてから^C
。
$ fg %1
[1] + 905549 running nohup jupyter notebook
^C
4. Jupyter Connection
VSCodeに戻り、適当なNotebookを開くと右下にJupyter Server: Local
と表示されている。これをクリックする。
Existingを選択。
URLをペーストし、適当な名前を入れてエンター。
5. カーネルを選択
処理したいNotebookを開き、右上のカーネル(Pythonのバージョンやenvが書いてある)をクリック。
Jupyter Sessionと書かれたカーネルを選択する。
ここで、私の場合はJupyter Sessionが表示されない場合が多かった。Notebookを開きなおすとJupyter Kernelの方は表示された(Jupyter Sessionは表示されない)ので、Jupyter Kernelを選択してから一度適当なセルを実行し、もう一度見にいくとJupyter Sessionが追加されていた。