兩條命令連線遠端jupyter notebook
有一次處理資料的時候我發現本機的記憶體不太夠用, 於是想要用伺服器上的資源. 但是直接在伺服器上又沒有高階的IDE, vim這編輯器用來看看指令碼還行, 真要拿來寫python程式那可真是要命.
但是不慌, jupyter完美解決這一問題. 首先在伺服器上執行jupyter, 然後在本地用ssh連線伺服器轉發埠. 然後就可以在本地的瀏覽器程式設計, 使用伺服器的資源了.
- 在伺服器端執行jupyter
jupyter notebook --no-browser --port=8889
稍微解釋一下, --no-browser是指不開啟瀏覽器, 由於伺服器上沒有瀏覽器, 因此我們要加上這個引數. --port=8889是指定埠, 當然不一定是8889, 也可以是其他的, 只要沒有在使用就行, 如果不指定預設的是8888.
- 在本地連線伺服器jupyter notebook 埠
ssh -N -f -L localhost:8889:localhost:8889 remote_user@remote_host
-N 的意思是 告訴ssh不執行任何遠端的命令, 在埠轉發中非常常見
-f 的意思是 轉到後臺執行, 這樣這個terminal還可以繼續使用
-L 的意思是 列出埠轉發配置(遠端埠8889到本地埠8889)。前面的是本地的, 後面的是遠端伺服器的.
最後將remote_user@remote_host 改成你的使用者名稱和伺服器ip地址.
-
在瀏覽器中顯示
在瀏覽器位址列輸入
localhost:8889
這時候應該要你輸入takon, 你看看伺服器上jupyter notebook 的執行terminal, 把上面的takon複製過去, 這樣應該就可以了.
還有一點, 把上面命令中的jupyter notebook 改成jupyter-lab. 功能會更加全面.
-
關閉連線
由於上面的命令中我們用了 -f 後臺執行. 因此關掉terminal並不會斷開ssh連線. 可以用ps找出pid再kill掉
ps -aux | grep localhost:8889 local_user 184170.00.041488684 ?Ss17:270:00 ssh -N -f -L localhost:8888:localhost:8889 remote_user@remote_host local_user 184240.00.011572932 pts/6S+17:270:00 grep localhost:8889
sudo kill -15 18417
這樣就可以斷開ssh連線了.