无法停止Jupyter Notebook

6

我正在远程机器上运行Jupyter Notebook,该机器有一个密码保护的账户。如果我运行:

jupyter-notebook list

我被告知Jupyter Notebook正在本地主机的p端口运行,其中p是端口号。在我的情况下,p=8890。这很好。然而,当我运行以下命令时:

jupyter-notebook stop 8890

我收到以下错误信息:
Shutting down server on port 8890 ...
Traceback (most recent call last):
  File "/usr/local/bin/jupyter-notebook", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python2.7/dist-packages/jupyter_core/application.py", line 266, in launch_instance
    return super(JupyterApp, cls).launch_instance(argv=argv, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/traitlets/config/application.py", line 658, in launch_instance
    app.start()
  File "/usr/local/lib/python2.7/dist-packages/notebook/notebookapp.py", line 1571, in start
    super(NotebookApp, self).start()
  File "/usr/local/lib/python2.7/dist-packages/jupyter_core/application.py", line 255, in start
    self.subapp.start()
  File "/usr/local/lib/python2.7/dist-packages/notebook/notebookapp.py", line 451, in start
    if not self.shutdown_server(server):
  File "/usr/local/lib/python2.7/dist-packages/notebook/notebookapp.py", line 442, in shutdown_server
    return shutdown_server(server, log=self.log)
  File "/usr/local/lib/python2.7/dist-packages/notebook/notebookapp.py", line 402, in shutdown_server
    HTTPClient().fetch(req)
  File "/usr/local/lib/python2.7/dist-packages/tornado/httpclient.py", line 102, in fetch
    self._async_client.fetch, request, **kwargs))
  File "/usr/local/lib/python2.7/dist-packages/tornado/ioloop.py", line 458, in run_sync
    return future_cell[0].result()
  File "/usr/local/lib/python2.7/dist-packages/tornado/concurrent.py", line 238, in result
    raise_exc_info(self._exc_info)
  File "<string>", line 3, in raise_exc_info
tornado.httpclient.HTTPError: HTTP 403: Forbidden

我知道可以使用kill -9命令杀死相应的进程来停止笔记本电脑,但这并不是我正在寻找的解决方案。有没有关于可能导致此问题的任何想法?
编辑:根据@Ereli的要求,我报告了netstat -apn | grep 8890的输出(不幸的是,我在机器上没有超级用户权限,因此缺少sudo部分)。
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:8890          0.0.0.0:*               LISTEN      169484/python   
tcp6       0      0 ::1:8890                :::*                    LISTEN      169484/python   
tcp6       0      0 ::1:50356               ::1:8890                ESTABLISHED -               
tcp6       0      0 ::1:50350               ::1:8890                ESTABLISHED -               
tcp6       0      0 ::1:8890                ::1:50356               ESTABLISHED 169484/python   
tcp6       0      0 ::1:8890                ::1:50350               ESTABLISHED 169484/python   
unix  2      [ ACC ]     STREAM     LISTENING     188903661 -                   /tmp/.java_pid153259.tmp
unix  2      [ ACC ]     STREAM     LISTENING     188904811 -                   /tmp/.java_pid153255.tmp
unix  2      [ ACC ]     STREAM     LISTENING     188906806 -                   /tmp/.java_pid153264.tmp
unix  2      [ ACC ]     STREAM     LISTENING     188904830 -                   /tmp/.java_pid153261.tmp
unix  2      [ ]         STREAM     CONNECTED     188902981 -                   
unix  2      [ ]         STREAM     CONNECTED     188906810 -                   
unix  2      [ ]         STREAM     CONNECTED     188904833 -  

你能分享一下你的 sudo netstat -apn|grep 8890 命令吗? - Ereli
我已经编辑了我的问题。 - Francesco Cariaggi
这是否回答了您的问题?如何正确关闭IPython Notebook? - Gonçalo Peres
1个回答

15

尝试使用 pkill 命令,它将 ps aux|grep 进程名kill 命令结合在一起。

pkill jupyter

应该能胜任工作。 如果不起作用,请使用

pkill -9 jupyter

如果您只希望限制杀死自己的进程,可以尝试使用-u标志。

 pkill -u `id -u` jupyter

如果需要的话,可以杀死configurable-http-proxy文件进程。

这个问题似乎在jupyterhub团队中尚未解决,因此我认为它还没有得到修复。


是的,但问题在于其他人也在同一台机器上运行笔记本电脑,所以我不想终止他们的进程。 - Francesco Cariaggi
2
一个普通用户不应该能够杀死其他用户的进程。 您可以使用pkill -upkill限制为您自己的进程。 - Ereli
我也很好奇为什么我们得到了“禁止访问”的错误。 - information_interchange

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接