GNU's Screen
homepage
Screen是由GNU計划開發的用於命令行終端切換的自由軟件,可以看作是窗口管理器的命令行界面版本。
可以通過該軟件同時連接多個本地或遠程的命令行會話,並在其間自由切換。
- 多窗口
在Screen環境下,所有的會話都獨立的運行,並擁有各自的編號、輸入、輸出和窗口緩存。
用戶可以通過快捷鍵在不同的窗口下切換,並可以自由的重定向各個窗口的輸入和輸出。 - 會話共享與限制
可以讓一個或多個用戶從不同終端多次登錄一個會話,並共享會話的所有特性(比如可以看到完全相同的輸出)。
同時提供了窗口訪問權限的機制,可以對窗口進行密碼保護。 - 會話恢復與分離
如果Screen本身沒有終止,在其內部運行的會話都可以恢復。即使網絡連接中斷,只要再次登錄后執行screen -r就可以恢復先前已經打開的會話。
同樣也可以執行分離命令detach,在保證里面的程序正常運行的情況下讓Screen掛起(切換到后台)。
安裝
CentOS系統中執行:yum install screen
Debian/Ubuntu系統執行:apt-get install screen
常用命令
列出所有會話:screen -ls
創建一個隨機命名的會話:screen
創建一個名稱為test的會話:screen -S test
分離test會話,但會話中的任務會繼續執行:screen -d test
通過screen name恢復test會話:screen -r test
通過session ID恢復test會話:screen -r <session ID>
創建一個處於分離模式(Detached),名稱為test的會話:screen -dmS test
使用總結
(Detached)---->掛起狀態,無終端在連接會話
(Attached)---->有終端在連接會話。
在會話中輸入exit:永久退出本會話,也即是刪除本會話,顯示信息“screen is terminating”。
多個session之間切換:先分離會話回到shell,再通過screen -ls查看會話列表,然后使用screen -r恢復到目標會話。
停止screen session:會話中輸入exit正常退出,或者 kill -9 PID (session ID同時也是PID)。
對於處於Attached模式的會話,不能直接screen -r,需要先screen -d,然后才能screen -r。
Note
不要在session中嵌套建立session。
不建議在一個session中對另一個session做相關操作,例如:在session中直接恢復其他session會話。