私は、ブラウザ経由でリモートからアクセスする fedora 27 サーバーで jupyter 4.4.0 ノートブック サービス (jupyter notebook --no-browser --port 8889) を実行しています。問題なく数時間サービスを使用した後、「カーネル エラー」が発生します。最初の数時間は、エラーなしで新しいノートブックを開始できます。ただし、しばらくすると、以下のエラー メッセージが表示されます。これは、カーネル エラーの原因がファイル '/run/user/1001/jupyter/kernel-869f88b2-0895-40fb-b759-c518a1686484.json' の不足であることを明確に示しています。
さらに調査してみると、/run/user/1001 から jupyter ディレクトリ全体が欠落しているためにファイルが欠落していることに気付きました。jupyter ディレクトリは、サービスを最初に起動したときに作成されるようですが、しばらくすると自動的に削除されるようです。
数日間の調査の結果、この問題は非アクティブ状態が原因である可能性が高く、その結果、OS または jupyter サービスが /run/user/1001/jupyter ディレクトリを削除していることがわかりました。
これまでのところ、/run/user/1001/jupyter ディレクトリが削除される原因や、削除されないようにする方法が正確にはわかりません。この問題を解決する方法をご存知ですか?
エラーメッセージ
Traceback (most recent call last):
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/web.py", line 1469, in _execute
result = yield result
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1015, in run
value = future.result()
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/concurrent.py", line 237, in result
raise_exc_info(self._exc_info)
File "<string>", line 3, in raise_exc_info
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1021, in run
yielded = self.gen.throw(*exc_info)
File "/opt/anaconda3/lib/python3.6/site-packages/notebook/services/sessions/handlers.py", line 73, in post
type=mtype))
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1015, in run
value = future.result()
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/concurrent.py", line 237, in result
raise_exc_info(self._exc_info)
File "<string>", line 3, in raise_exc_info
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1021, in run
yielded = self.gen.throw(*exc_info)
File "/opt/anaconda3/lib/python3.6/site-packages/notebook/services/sessions/sessionmanager.py", line 79, in create_session
kernel_id = yield self.start_kernel_for_session(session_id, path, name, type, kernel_name)
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1015, in run
value = future.result()
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/concurrent.py", line 237, in result
raise_exc_info(self._exc_info)
File "<string>", line 3, in raise_exc_info
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1021, in run
yielded = self.gen.throw(*exc_info)
File "/opt/anaconda3/lib/python3.6/site-packages/notebook/services/sessions/sessionmanager.py", line 92, in start_kernel_for_session
self.kernel_manager.start_kernel(path=kernel_path, kernel_name=kernel_name)
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 1015, in run
value = future.result()
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/concurrent.py", line 237, in result
raise_exc_info(self._exc_info)
File "<string>", line 3, in raise_exc_info
File "/opt/anaconda3/lib/python3.6/site-packages/tornado/gen.py", line 285, in wrapper
yielded = next(result)
File "/opt/anaconda3/lib/python3.6/site-packages/notebook/services/kernels/kernelmanager.py", line 160, in start_kernel
super(MappingKernelManager, self).start_kernel(**kwargs)
File "/opt/anaconda3/lib/python3.6/site-packages/jupyter_client/multikernelmanager.py", line 110, in start_kernel
km.start_kernel(**kwargs)
File "/opt/anaconda3/lib/python3.6/site-packages/jupyter_client/manager.py", line 240, in start_kernel
self.write_connection_file()
File "/opt/anaconda3/lib/python3.6/site-packages/jupyter_client/connect.py", line 472, in write_connection_file
kernel_name=self.kernel_name
File "/opt/anaconda3/lib/python3.6/site-packages/jupyter_client/connect.py", line 137, in write_connection_file
with open(fname, 'w') as f:
FileNotFoundError: [Errno 2] No such file or directory: '/run/user/1001/jupyter/kernel-869f88b2-0895-40fb-b759-c518a1686484.json'
ありがとう
答え1
私は JUPYTER_RUNTIME_DIR 変数を設定することでこの問題を解決しました。Jupyter はデフォルトでランタイム ファイルを $XDG_RUNTIME_DIR/jupyter に保存します。JUPYTER_RUNTIME_DIR を設定すると、この動作が上書きされます。このエラーを防ぐには、自動的にクリーンアップされないディレクトリに設定することができます。
Jupyter を起動する前に行うことは次のとおりです。
export JUPYTER_RUNTIME_DIR="path_to_my_home_directory/.jupyter_runtime"
そして問題は解決しました!
私が見つけたその他の詳細:
https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html#変数