文章目錄
1. 使用場景
在Screen環境下,所有的會話都獨立的運行,並擁有各自的編號、輸入、輸出和窗口緩存。用戶可以通過快捷鍵在不同的窗口下切換,並可以自由的重定向各個窗口的輸入和輸出。
使用場景:
- disconnect ssh
- multi-tasking environment
安裝方法:
sudo yum install screen
sudo apt install screen
2. 參數說明
screen [-AmRvx -ls -wipe][-d <作業名稱>][-h <行數>][-r <作業名稱>][-s ][-S <作業名稱>]
-A 將所有的視窗都調整爲目前終端機的大小。
-d <作業名稱> 將指定的screen作業離線。
-h <行數> 指定視窗的緩衝區行數。
-m 即使目前已在作業中的screen作業,仍強制建立新的screen作業。
-r <作業名稱> 恢復離線的screen作業。
-R 先試圖恢復離線的作業。若找不到離線的作業,即建立新的screen作業。
-s 指定建立新視窗時,所要執行的shell。
-S <作業名稱> 指定screen作業的名稱。
-v 顯示版本信息。
-x 恢復之前離線的screen作業。
-ls或--list 顯示目前所有的screen作業。
-wipe 檢查目前所有的screen作業,並刪除已經無法使用的screen作業。
3. 最常用用法
最常用的用法莫過於保持進程運行了。比如說我用ssh連接服務器,開了一個進程,但是我想實時地查看console的輸出日誌,因此不想使用nohup或者“-d”啓動參數來讓其在後臺運行;與此同時,還需要斷開ssh後依舊保持進程在運行。那麼screen非常多用於這種場景。
3.1 開始一個session
screen -S yourname # 創建一個screen作業,使用後會自動進入一個窗口中
3.2 detach一個session
# 在保持當前session狀態的同時,退出當前session
ctrl+a+d (三個鍵同時按) # 當前已經進入了一個session中,退出當前session
3.3 顯示所有session
screen -ls # 顯示目前所有的screen作業
3.4 進入一個session
screen -r yourname
3.5 殺死一個session
# 兩種方法,一種是screen命令關閉,另一種是直接殺死該窗口進程,實際效果一樣
screen -X -S yourname quit # 殺死名叫yourname的session
kill -9 session進程號
3.6 自動清理死掉的session
screen -wipe
3.7 例子:使用screen維護一個elasticsearch服務
例如,使用screen來維護一個elasticsearch的進程
4.screen中使用ctrl+a
ctrl+a+? # 顯示所有鍵綁定信息
ctrl+a+c # 創建一個新的運行shell的窗口並切換到該窗ctrl+a+-a n # Next,切換到下一個 winctrl+a+
ctrl+a+p # Previous,切換到前一個 window
ctrl+a+0..9 # 切換到第 0..9 個 window
Ctrl+a+[Space] # 由視窗0循序切換到視窗9
ctrl+a+ctrl+a # 在兩個最近使用的 window 間切換
ctrl+a+x # 鎖住當前的 window,需用用戶密碼解鎖
ctrl+a+d # detach,暫時離開當前session
ctrl+a+z # 把當前session放到後臺執行,用 shell 的 fg 命令則可回去。
ctrl+a+w #顯示所有窗口列表
ctrl+a+t #time,顯示當前時間,和系統的 load
ctrl+a+k # kill window,強行關閉當前的 window
ctrl+a+[ # 進入 copy mode,在 copy mode 下可以回滾、搜索、複製就像用使用 vi 一樣
C-b Backward,PageUp
C-f Forward,PageDown
H(大寫) High,將光標移至左上角
L Low,將光標移至左下角
0 移到行首
$ 行末
w forward one word,以字爲單位往前移
b backward one word,以字爲單位往後移
Space 第一次按爲標記區起點,第二次按爲終點
Esc 結束 copy mode
ctrl+a+] # paste,把剛剛在 copy mode 選定的內容貼上