概述#
screen 是一個強大的終端多路複用器,允許你在一個物理終端上運行多個全屏窗格(虛擬終端)。這是特別有用的工具,尤其是在需要長期運行進程或者在遠程會話中保持會話不被斷開的情況下。screen 可以讓開啟的應用程序在後台運行。
安裝#
linux 下安裝
sudo apt install screen
mac 下安裝
brew install screen
參數#
選項 | 描述 |
---|---|
-4 | 僅將主機名解析為 IPv4 地址。 |
-6 | 僅將主機名解析為 IPv6 地址。 |
-A -[r|R] | 適應所有窗口以適應新的顯示寬度和高度。 |
-c file | 讀取配置文件而不是 '.screenrc'。 |
-d (-r) | 分離正在運行的 screen(並在此處重新連接)。 |
-dmS name | 以守護進程模式啟動:在分離模式下進行 screen 會話。 |
-D (-r) | 分離並登出遠程連接(並在此處重新連接)。 |
-D -RR | 執行所需的操作以獲取 screen 會話。 |
-f | 開啟流量控制,-fn = 關閉,-fa = 自動。 |
-h lines | 設置滾動歷史緩衝區的大小。 |
-i | 當流量控制開啟時,更早地中斷輸出。 |
-l | 開啟登錄模式(更新 /var/run/utmp),-ln = 關閉。 |
-ls [match] | 什麼都不做,只列出我們的 SockDir [在可能的匹配上]。 |
-L | 打開輸出日誌。 |
-Logfile file | 設置日誌文件名稱。 |
-m | 忽略 $STY 變量,創建一個新的 screen 會話。 |
-O | 選擇最佳輸出而不是精確的 vt100 仿真。 |
-p window | 如果存在,預選命名窗口。 |
-q | 安靜啟動。如果失敗則退出並返回非零返回碼。 |
-r [session] | 重新連接到分離的 screen 進程。 |
-R | 如果可能,重新連接,否則啟動新會話。 |
-s shell | 執行的 shell,而不是 $SHELL。 |
-S sockname | 將此會話命名為<pid>.sockname ,而不是<pid>.<tty>.<host> 。 |
-t title | 設置標題。(窗口的名稱)。 |
-U | 告訴 screen 使用 UTF-8 編碼。 |
-x | 附加到未分離的 screen。(多顯示模式)。 |
-X | 在指定會話中執行<cmd> 作為 screen 命令。 |
案例#
- 啟動一個新的 screen 會話
screen
- 給 screen 會話命名,方便會話管理
screen -S <name>
- detached (分離) 正在運行的 screen 會話,放至後台(會話環境中操作)
ctrl + a; d
- 列出正在運行的 screen 會話
screen -ls
- 指定 PID 重新連接到運行的 screen
screen -r <pid>
- 指定名稱重新連接到運行的 screen
screen -r <name>
- 鎖定 screen 會話
ctrl + a; x
需要輸入密碼才能打開會話
- 殺死 detached screen 會話
screen -S <name-or-pid> -X kill
- 退出 detached screen 會話
screen -S <name-or-pid> -X quit
常用的一些快捷鍵#
- 在當前會話中創建一個新窗口
ctrl + a;c
切換窗口
切換到下一個窗口:
ctrl-a;n
切換到上一個窗口:
ctrl-a;p
列出所有窗口:
ctrl-a;w
殺掉窗口
關閉當前窗口:
Ctrl-a;k
重命名窗口
重命名當前窗口:
Ctrl-a;A
分屏顯示
水平分屏:
Ctrl-a;S
垂直分屏(較新的 screen 版本支持):
Ctrl-a;|
切換到下一個分屏:
Ctrl-a;TAB
關閉當前分屏:
Ctrl-a;X
實用案例#
遠程會話#
如果通過 ssh 遠程伺服器進行操作,需要保持會話不中斷,可以使用 screen:
ssh user@server_ip
screen -S remotesession
在 screen 會話中進行操作,即使網絡連接中斷,你的會話也會保持運行。重新建立連接後可以重新連接:
ssh user@server_ip
screen -r remotesession
多任務處理#
在同一個 screen 會話中處理多個任務:screen -S multitask
在第一個窗口中運行一個任務,例如監控系統日誌:tail -f /var/log/syslog
創建新窗口:Ctrl-a;c
在新窗口中進行其他任務,例如編輯文件:vim /etc/hosts
通過 Ctrl-a;n
和Ctrl-a;p
在兩者之間切換。
退出 Screen 會話#
通過exit
或者Ctrl-d
關閉所有窗口後,screen 會話會自動結束。