나는 브라우저를 통해 원격으로 액세스하는 fedora 27 서버에서 jupyter 4.4.0 노트북 서비스(jupyter 노트북 --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#variables