Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux screen 指令完整教學:終端機多工、斷線保護、會話共享與遠端協作實戰

編輯:Linux 教學

screen 是系統管理者的終端機多工神器:單一 SSH 連線下可建立多個虛擬終端、長時間編譯/備份任務斷線不中斷、支援會話分離/重掛、甚至允許多使用者同步檢視同一終端畫面 (遠端協作/教學)。本文涵蓋:安裝、核心快捷鍵、會話管理、分割視窗、日誌記錄、鎖定終端、多使用者共享模式、systemd 服務化常駐、常見問題排解。

一、安裝與啟動


# CentOS/RHEL
yum install -y screen
# Debian/Ubuntu
apt-get install -y screen

# 直接啟動新會話
screen
# 或指定會話名稱
screen -S mysession

二、核心快捷鍵 (全部以 Ctrl+a 開頭)

組合鍵動作記憶口訣
Ctrl+a c建立新視窗Create
Ctrl+a n切換到下一視窗Next
Ctrl+a p切換到上一視窗Previous
Ctrl+a 0-9直接跳至第 0-9 號視窗Number
Ctrl+a "視窗列表選單 (可搜尋)雙引號像清單
Ctrl+a d分離會話 (放入背景)Detach
Ctrl+a S水平分割視窗 (大寫 S)Split
Ctrl+a |垂直分割視窗 (需新版 screen)管線符號像分割
Ctrl+a Tab在分割區之間切換焦點Tab 切換
Ctrl+a X關閉當前分割區 (大寫 X)eXit
Ctrl+a k殺掉當前視窗 (確認 y)Kill
Ctrl+a x鎖定終端 (需密碼解鎖)Lock
Ctrl+a ?顯示所有快捷鍵幫助問號求助
Ctrl+a A重命名當前視窗Title
Ctrl+a H切換當前視窗日誌記錄History log

三、會話管理指令 (Shell 提示字元下執行)


screen -ls                # 列出所有會話
screen -r                 # 重掛唯一的分離會話
screen -r 12345           # 重掛指定 PID 會話
screen -r mysession       # 重掛指定名稱會話
screen -d -r              # 強制分離他處連線並重掛 (搶佔)
screen -D -RR             # 終極重掛:有則重掛,無則建立
screen -wipe              # 清除已死會話
screen -S name -X cmd     # 向指定會話發送指令 (如 stuff "ls\n")

四、實戰場景範例

場景 1:長時間編譯斷線保護


ssh user@server
screen -S build_kernel
make -j$(nproc)          # 開始編譯
Ctrl+a d                 # 分離,可安全關閉 SSH
# ... 回家、換網路 ...
ssh user@server
screen -r build_kernel   # 回到編譯畫面,輸出未中斷

場景 2:多視窗並行作業


screen -S ops
Ctrl+a c                 # 視窗 0: top 監控
Ctrl+a c                 # 視窗 1: tail -f /var/log/messages
Ctrl+a c                 # 視窗 2: vim 配置檔
Ctrl+a n / p             # 快速切換

場景 3:遠端協作/教學 (多使用者共享)


# 演示者
screen -S demo
# 觀看者 (同一台機器不同用戶,或同用戶不同 SSH)
screen -x demo
# 雙方同步看到相同終端輸入輸出,演示者操作,觀看者即時跟隨

權限要求:雙方需為同一系統用戶,或演示者執行 Ctrl+a :multiuser on 並 Ctrl+a :acladd username 授權。

場景 4:自動記錄操作審計


# 啟動時自動記錄
screen -L -S audit_session
# 或會話中 Ctrl+a H 切換
# 日誌檔預設放於當前目錄 screenlog.0

五、進階配置 ~/.screenrc


# 啟動訊息關閉
startup_message off
# 底部狀態列 (顯示視窗列表、時間、負載)
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]'
# 滾動緩衝區 10000 行
defscrollback 10000
# 視窗標題自動顯示當前指令
shelltitle '$ |bash'
# 關閉視覺鈴 (閃螢幕)
vbell off

六、systemd 服務化 (開機自動啟動長期任務)


cat > /etc/systemd/system/screen-mytask@.service <<'EOF'
[Unit]
Description=Screen session for %i
After=network.target

[Service]
Type=forking
User=myuser
WorkingDirectory=/home/myuser
ExecStart=/usr/bin/screen -dmS %i /home/myuser/scripts/%i.sh
ExecStop=/usr/bin/screen -S %i -X quit
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now screen-mytask@backup

七、常見問題排解

現象原因解決
無法重掛:Attached 狀態另一終端仍連接此會話screen -d -r session 強制分離並重掛
顯示亂碼/顏色異常TERM 環境變數不匹配export TERM=screen-256color 或在 .screenrc 設定 term screen-256color
分割區無法切換忘記按 Ctrl+a Tab必須先按 Ctrl+a 放開,再按 Tab
多用戶共享失敗權限、multiuser 未開啟、acladd 未授權演示者依序執行 Ctrl+a :multiuser on Ctrl+a :acladd viewer
scrollback 無法向上翻未進入 copy modeCtrl+a Esc 進入 copy mode,再用 PageUp/Down,Esc 離開
Copyright © Windows教程網 All Rights Reserved