顯示廣告
隱藏 ✕
看板 Knuckles_note
作者 Knuckles (站長 那克斯)
標題 [Linux] 使用screen讓ssh登入可多工執行
時間 2014年04月23日 Wed. AM 02:47:28


參考:
http://sealmemory.blogspot.tw/2013/11/screen-command-examples-to-manage-linux-terminals.html
使用 Screen 指令操控 UNIX/Linux 終端機的教學與範例

使用 ssh 登入 Linux 主機時,若要執行跑很久的指令
必需一直保持連線,若關閉ssh的話執行的程式也會中斷

此時可以利用 screen 的指令開啟多工模式

◎ 安裝 screen
$ yum install screen


◎ 使用方法

只要執行 screen
$ screen

就會開啟一個新的 shell

要離開就按 exit 即可
$ exit


◎ 卸離(Detach)與重新連接(Re-attach)

想要離開 screen,但要裡面執行的程式不被中斷的話
可使用 ctrl+a 再按 d 來卸離(detach)

之後就算中斷了ssh的連線,也不會中斷screen裡的程式

要重新連接這個 shell 的話就執行
$ screen -r
即可


◎ 開啟多個 screen

若是開了多個 screen 的話

可用 screen -ls 顯示目前開啟的 screen 列表
$ screen -ls

There are screens on:
        24621.pts-0.host1       (Detached)
        24633.pts-0.host1       (Detached)
2 Sockets in /var/run/screen/S-root.

使用 screen -r 加上前面的數字,即可選擇要重新連結哪一個 screen
$ screen -r 24621


◎ 修改 screen 設定

在 ~/.screenrc 加上以下設定
=========================================================

# 關閉畫面閃爍 (可用 ^a ^g 切換)
vbell off

# 在 screen 最下面一行顯示分頁狀態列
caption always "%{kw}%-w%{wb} %n %t %{-}%+w %-= $USER@%H %Y-%m-%d %0c"

# 將預設編碼設為 UTF-8
defutf8 on

# 避免screen下進入vim再離開後,檔案的內容留在螢幕上
# Refresh the display when exiting programs
altscreen on

#避免進入 screen 時視窗寬度被改變
# Change the xterm initialization string from is2=\E[!p\E[?3;4l\E[4l\E>
# (This fixes the "Aborted because of window size change" konsole symptoms found
#  in bug #134198)
termcapinfo xterm* 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'


=========================================================


◎ 在同一個 screen 下開啟多個分頁

在同一個 screen 下開多個分頁會比較方便切換

進入screen後預設是分頁編號 0

ctrl+a 再按 c ,可開新的分頁

ctrl+a 再按數字x,來切換至編號x的分頁

ctrl+a, A 可更改分頁名稱

ctrl+a, k 關閉目前分頁

ctrl+a, \ 關閉所有分頁,離開screen


按 ctrl+a 再按 ? 可查詢 screen 的按鍵功能列表


◎ 修改快速鍵

在 ~/.screenrc 加上自訂的快速鍵設定

==============================================
# 自訂熱鍵

# Ctrl + t : 開新分頁(C-a c)
bindkey "^t" screen
# Ctrl + w : 關閉當前視窗(C-a k)
bindkey "^w" kill
# Ctrl + n : 下個分頁(C-a n)
bindkey "^n" next
# Ctrl + p : 上個分頁(C-a p)
bindkey "^p" prev

==============================================


◎ 複製模式 (copy mode)

當顯示的資料超過一頁時,原本可以使用捲軸捲上去看
但用 screen 後就不能用捲軸了
要改用 screen 的複製模式

按 ctrl+a 再按 [  
或 ctrl+a 再按 Esc,進入複製模式

此時可以像vim一樣用方向鍵、PageUp、PageDn來翻頁
或用 / 來搜尋

按 [ 或 Esc 即可離開複製模式


在複製模式時按下空白鍵可以開始選取要複製的內容
選取完成後再按下第二次空白鍵,即可複製內容並離開複製模式

接著使用 ctrl+a 再按 ] 可貼上複製的內容。


--
※ 作者: Knuckles 時間: 2014-04-23 02:47:28
※ 編輯: Knuckles 時間: 2014-04-30 04:03:53
※ 看板: KnucklesNote 文章推薦值: 2 目前人氣: 0 累積人氣: 1862 
分享網址: 複製 已複製
1樓 時間: 2014-04-23 18:17:43 (台灣)
  04-23 18:17 TW
在 .screenrc 裡加上 screen -t wintitle 0 可以進入時自動 create window
2樓 時間: 2014-04-23 18:20:36 (台灣)
  04-23 18:20 TW
^a a 可以送出 ^a ,用來取代原本 console 中被 screen 吃掉的 ^a
3樓 時間: 2014-04-23 18:23:30 (台灣)
  04-23 18:23 TW
^a [ 可以進入 copy mode,然後就像 vi 一樣操作(只能copy),^a ] 離開
4樓 時間: 2014-04-23 21:51:45 (台灣)
  04-23 21:51 TW
要在背景執行而且 ssh 斷掉還要繼續執行,那就使用 nohup 不就好了?
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇