前言:最近在使用jupyter的過程中遇到了問題雪标,當(dāng)遠(yuǎn)程ssh連接斷開后零院,jupyter中正在run的任務(wù)也就中斷了。
比較簡(jiǎn)單的解決方法是在輸入命令行nohup jupyter-notebook &
村刨,然后通過查看nohup.out里面的端口號(hào)在瀏覽器里面使用告抄。或者是使用tmux這個(gè)神器嵌牺,不僅可以解決上述問題打洼,還可以十分方便的管理終端窗口。
本文先具體說明如何實(shí)現(xiàn)上述功能逆粹,再對(duì)tmux介紹募疮。
如何使用tmux保持遠(yuǎn)程連接?
1.本地主機(jī)ssh遠(yuǎn)程連接到遠(yuǎn)程主機(jī)
2.新建一個(gè)tmux的session tmux new -s jpt
3.打開jupyter進(jìn)行操作 jupyter-notebook
4.即使ssh連接斷開僻弹,也可以正常在瀏覽器中正常連接使用jupyter了
5.關(guān)閉該session tmux kill-session -t jpt
tmux簡(jiǎn)介
tmux是一款優(yōu)秀的終端復(fù)用軟件阿浓,它比Screen更加強(qiáng)大,特別是以下三處功能:
-
絲滑分屏(split)蹋绽,雖然iTem2也提供了橫向和豎向分屏功能
?+shift+d
和?+d
芭毙,但這種分屏功能非常拙劣,完全等同于屏幕新開一個(gè)窗口卸耘,新開的pane不會(huì)自動(dòng)進(jìn)入到當(dāng)前目錄退敦,也沒有記住當(dāng)前登錄狀態(tài)。 - 保護(hù)現(xiàn)場(chǎng)(attach)蚣抗,即使命令行的工作只進(jìn)行到一半苛聘,關(guān)閉終端后還可以重新進(jìn)入到操作現(xiàn)場(chǎng),繼續(xù)工作。
- 會(huì)話共享(適用于結(jié)對(duì)編程或遠(yuǎn)程教學(xué))设哗,將 tmux 會(huì)話的地址分享給他人唱捣,這樣他們就可以通過 SSH 接入該會(huì)話。
其中保護(hù)現(xiàn)場(chǎng)就是本文要解決的問題的一個(gè)體現(xiàn)网梢。tmux采用C/S模型構(gòu)建震缭,輸入tmux命令就相當(dāng)于開啟了一個(gè)服務(wù)器,此時(shí)默認(rèn)將新建一個(gè)會(huì)話(session)战虏。
session命令
新建:
tmux # 新建一個(gè)無名稱的會(huì)話
tmux new -s demo # 新建一個(gè)名稱為demo的會(huì)話
在流程中session的名字使用了jpt拣宰,可以自己指定
斷開:
tmux detach # 斷開當(dāng)前會(huì)話,會(huì)話在后臺(tái)運(yùn)行
進(jìn)入之前的會(huì)話:
tmux a # 默認(rèn)進(jìn)入第一個(gè)會(huì)話
tmux a -t demo # 進(jìn)入到名稱為demo的會(huì)話關(guān)閉會(huì)話
關(guān)閉:
tmux kill-session -t demo # 關(guān)閉demo會(huì)話
tmux kill-server # 關(guān)閉服務(wù)器烦感,所有的會(huì)話都將關(guān)閉
查看所有的會(huì)話:
tmux list-session # 查看所有會(huì)話
tmux ls # 查看所有會(huì)話巡社,提倡使用簡(jiǎn)寫形式
tmux中的window和panel
一個(gè)tmux session
(會(huì)話)可以包含多個(gè)window
(窗口),窗口默認(rèn)充滿會(huì)話界面手趣,因此這些窗口中可以運(yùn)行相關(guān)性不大的任務(wù)晌该。
一個(gè)window
又可以包含多個(gè)pane
(面板),窗口下的面板绿渣,都處于同一界面下朝群,這些面板適合運(yùn)行相關(guān)性高的任務(wù),以便同時(shí)觀察到它們的運(yùn)行情況中符。
我的理解是姜胖,進(jìn)入自己的工作區(qū)之后建立一個(gè)session
,再新建window和panel的時(shí)候可以自動(dòng)進(jìn)入當(dāng)前目錄淀散。對(duì)于window還是panel右莱,希望同屏出現(xiàn)一起查看的就建立不同的panel
,否則就新建一個(gè)window
(window里面可以是一個(gè)panel也可以是多個(gè))档插。
tmux使用中重點(diǎn)關(guān)注
- tmux使用時(shí)快捷鍵都是先輸入指令前綴
ctrl+b
后再輸入其他慢蜓,可以修改為ctrl+a
等 - 用戶級(jí)配置文件為
~/.tmux.conf
(沒有的話就創(chuàng)建一個(gè)) - 可以開啟鼠標(biāo)支持(注意如果開啟后iTem2默認(rèn)的鼠標(biāo)選中即復(fù)制功能需要同時(shí)按下
Alt
鍵),可以直接用鼠標(biāo)跳到不同的panel - 熟悉一下快捷鍵阀捅,并且把相關(guān)快捷鍵修改為好用的。特別是新增面板针余,可以改為
-
饲鄙、|
,十分形象的表示橫向分隔或者縱向分隔圆雁。
基本配置
set -g prefix C-a #
unbind C-b # C-b即Ctrl+b鍵忍级,unbind意味著解除綁定
bind C-a send-prefix # 綁定Ctrl+a為新的指令前綴
# 從tmux v1.6版起,支持設(shè)置第二個(gè)指令前綴
set-option -g prefix2 ` # 設(shè)置一個(gè)不常用的`鍵作為指令前綴伪朽,按鍵更快些
unbind '"'
bind - splitw -v -c '#{pane_current_path}' # 垂直方向新增面板轴咱,默認(rèn)進(jìn)入當(dāng)前目錄
unbind %
bind | splitw -h -c '#{pane_current_path}' # 水平方向新增面板,默認(rèn)進(jìn)入當(dāng)前目錄
set-option -g mouse on # 開啟鼠標(biāo)支持
詳細(xì)內(nèi)容可以參考Tmux使用手冊(cè),十分詳細(xì)全面朴肺。