2016-01-27 35 views
6

我正在啓動AWS實例(Redhat Linux服務器)上的jupyter筆記本服務器以通過https連接。在配置文件中,我認爲這應該在端口9999上。但是,當我停止並使用Ctrl-C重新啓動進程時,端口不會被釋放,如下所示。如何在筆記本服務器停止後釋放筆記本服務器端口?

[[email protected] 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). 

順便說一句,那些「隨機端口」不看很隨意的給我。

+0

真,可能以超級用戶更好的用戶所擁有的權限是(雖然IPython中/ jupyter筆記本絕對是編程社區使用的工具) 。我如何遷移它? –

+1

你確定停止命令實際上是否真的停止了服務?你可以做一個停止和netstat -tlnp在一個原始的檢查?有可能停止只刪除PID文件,但實際上無法停止服務 – Tom

+0

不,它似乎沒有停止服務。因此,在'netstat -tlnp'之後,我可以使用'kill [pid]'這似乎工作。謝謝! –

回答

3

有時一個服務的停止命令不會返回任何錯誤,並刪除進程的PID文件,但實際上並不終止進程本身。

您可以檢查進程仍在運行停止命令,然後運行的是

ps aux | grep -i notebook 

netstat -tlnp | grep <portNumber> 

正如你所說,你可以再手動殺死進程,或修復停止腳本(通常是/etc/init.d/serviceName+d)。該進程不會被殺死的原因經常(並不總是)鏈接到執行該命令

+0

答案所以我應該開始使用'須藤jupyter筆記本&',而不僅僅是'jupyter筆記本&'服務器? –

+0

不,那不可能。它給了我'sudo:jupyter:command not found' –

+0

通常你會傾向於爲用戶提供服務。例如像Apache,MySQL等服務,你將得到一個系統用戶專門運行這些服務,只需要最少的特權來運行它們。然而,如果安全對你來說不是什麼大不了的事,那麼只要做你正在爲之工作的東西。我很難說,如果你應該做sudo或不要,因爲我不知道你的系統設置/ users/rights/path/etc和jupyter服務:) – Tom

相關問題