你是否曾因 SSH 逾時斷線導致跑了三天的基因定序分析中斷?或是想在同一終端同時編譯核心、監控日誌、編寫腳本卻苦於無法切換?screen 正是為了解決這類「終端多工與會話持久化」而生的神器。本文從基礎熱鍵到進階實戰場景,帶你徹底駕馭 screen。
| 組合鍵 | 功能 | 備註 |
|---|---|---|
| Ctrl+a c | 建立新視窗 | |
| Ctrl+a n | 切換至下一視窗 | |
| Ctrl+a p | 切換至上一視窗 | |
| Ctrl+a " | 視窗列表選單 | 可輸入編號快速跳轉 |
| Ctrl+a 0~9 | 直接跳至第 0~9 號視窗 | |
| Ctrl+a Ctrl+a | 在最近兩個視窗間切換 | 極佳雙任務切換鍵 |
| Ctrl+a K | 強制關閉當前視窗 | 慎用 |
| Ctrl+a d | 暫時脫離會話 | 會話在後台持續運行 |
| Ctrl+a [ | 進入複製/捲動模式 | 支援 vi 風格搜尋、複製 |
| Ctrl+a t | 顯示系統時間與負載 |
screen -ls # 列出所有會話 screen -S mysession # 建立並命名新會話 screen -r mysession # 重新連接指定會話 screen -r 12345 # 以 PID 連接 screen -d -r mysession # 強制脫離他處連接並接管 screen -X -S mysession quit # 終結指定會話
ssh user@server screen -S build_kernel make menuconfig && make -j$(nproc) # 即使關閉筆電、斷網,編譯仍在後台持續 # 隨時可 screen -r build_kernel 回去查看進度
vim main.c 編寫代碼tail -f /var/log/syslog 監控日誌make && ./test 編譯測試雙方均 screen -x shared_session 連接同一會話,即可實時共享終端畫面與輸入,適合結對編程、遠端除錯。
echo "defscrollback 10000" >> ~/.screenrc 保留 1 萬行歷史。~/.screenrc 設定 hardstatus alwayslastline "%{= kw}%H %{= kb}%?%-Lw%?%{= kw}%n*%f %t%?(%u)%?%{= kb}%?%+Lw%?" 顯示主機名、視窗列表、當前時間。~/.bashrc 加入 [ -z "$STY" ] && exec screen -RR,登入即自動進入/恢復會話。nohup 僅解決「關閉終端不掛掉進程」,無會話管理、視窗分割、複製模式等功能。tmux 功能更強、腳本化更佳,但 screen 幾乎預裝於所有 Unix/Linux,零安裝成本,極適合「到處都能用」的運維場景。
掌握 screen,等於擁有了「永不斷線的終端」、「無限分身的螢幕」與「隨時暫停/繼續的時光機」。將其內化為肌肉記憶,你的 Linux 操作效率將躍升一個台階。