【问题标题】:How do I release ports which are being held by a notebook server after it has been stopped?笔记本服务器停止后,如何释放被笔记本服务器占用的端口?
【发布时间】:2016-01-27 18:43:13
【问题描述】:

我正在 AWS 实例(Redhat Linux 服务器)上启动 jupyter notebook 服务器以通过 https 连接。在配置文件中,我认为这应该在端口 9999 上。但是当我使用 Ctrl-C 停止并重新启动进程时,端口并没有被释放,如下所示。

[user@ip-xxx-xx-xx-xxx notebook]$ [I 08:39:27.901 NotebookApp] The port 9999 is already in use, trying another random port.
[I 08:39:27.901 NotebookApp] The port 10000 is already in use, trying another random port.
[I 08:39:27.902 NotebookApp] The port 10001 is already in use, trying another random port.
[I 08:39:27.905 NotebookApp] Serving notebooks from local directory: /home/user/docs/notebook
[I 08:39:27.905 NotebookApp] 0 active kernels
[I 08:39:27.905 NotebookApp] The Jupyter Notebook is running at: https://[all ip addresses on your system]:10002/
[I 08:39:27.905 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

顺便说一句,那些“随机端口”在我看来并不是很随机。

【问题讨论】:

  • 没错,在 SuperUser 上可能更好(尽管 ipython/jupyter notebook 绝对是编程社区使用的工具)。如何迁移它?
  • 您确定 stop 命令真的会停止服务吗?你能做一个 stop 和 netstat -tlnp 来检查这个吗?有可能stop只是删除了pid文件,但实际上并没有停止服务
  • 不,它似乎没有停止服务。所以在netstat -tlnp 之后我可以使用kill [pid] 这似乎有效。谢谢!
  • 很高兴你找到它 :) 将此评论作为潜在其他用户的答案

标签: port ipython-notebook jupyter jupyter-notebook


【解决方案1】:

有时服务的停止命令不会返回任何错误并删除进程的 pid 文件,但实际上并不会终止进程本身。

您可以通过运行 stop 命令然后检查进程是否仍在运行

ps aux | grep -i notebook

netstat -tlnp | grep <portNumber>

正如您所说,您可以手动终止该进程,或修复停止脚本(通常是 /etc/init.d/serviceName+d)。进程未被杀死的原因通常(并非总是)与执行命令的用户拥有的权限有关

【讨论】:

  • 所以我应该使用sudo jupyter notebook &amp; 而不仅仅是jupyter notebook &amp; 来启动服务器?
  • 不,不可能。它给了我sudo: jupyter: command not found
  • 通常您更愿意让用户专注于一项服务。例如,对于 apache、mysql 等服务,您将获得一个专门用于运行这些服务的系统用户,并且只需要运行它们所需的最低权限。但是,如果安全性对您来说不是什么大问题,那么只需做对您有用的事情。我很难说您是否应该执行 sudo,因为我既不知道您的系统设置/用户/权限/路径/等也不知道 jupyter 服务:)
猜你喜欢
  • 2019-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-28
  • 1970-01-01
  • 2019-12-14
  • 2013-09-12
  • 2014-10-17
相关资源
最近更新 更多