前言
在Linux
中,我們經常會做一些關於數據的操作(備份、傳輸、壓縮等)或是要在后台持續的運行一些程序。由於,工作的數據量很大或者工作要持續很長的時間,我們就必須保證這個終端的啟動,一旦終端關閉了,它所運行的進程也會關閉,我們所做的工作就可能前功盡棄。但是,即使我們不主動的關閉終端,終端有的時候也會應為一些原因(網絡、鎖屏等)而中斷,導致我們的工作進度清零。
有很多種方法,這里只介紹screen
命令。
screen命令的優點
支持會話恢復
當我們開啟screen
后,只要screen
進程沒有終止,其內部運行的會話都可以恢復。網絡連接中斷臨時,用戶也可以進入開啟的screen
中,對中斷的會話的進行控制(恢復或刪除)。
通常的用法是在暫時離開的時候,讓在screen
中運行的會話保持正常運行並將Screen
切換到后台。
支持多窗口
當使用screen
時,可以開啟多個窗口,讓每個會話都獨立運行到不同的窗口,並擁有各自的編號、名稱等。用戶可以通過這些編號及名稱進入不同的窗口。
會話共享
Screen
可以讓一個或多個用戶從不同終端登錄一個會話,並共享會話。使用戶登陸同一會話的用戶看到同一會話內容。
同時它可以提供窗口訪問權限的設置,對窗口進行密碼保護。
screen的參數
-4 僅將主機名解析到IPv4地址
-6 僅將主機名解析到IPv6地址
-A 將所有的視窗適應當前終端屏幕的大小
-d 將指定的screen作業離線
-h lines 指定視窗的緩沖區行數
-m 即使目前已在作業中的screen作業,仍強制建立新的screen作業
-r 恢復(Reattach)離線(detach)的screen作業
-R 先試圖恢復離線的作業。若找不到離線的作業,即建立新的screen作業
-s shell 建立新視窗時(使用shell,而不是$SHELL
-S 創建並指定screen作業的名稱
-U 指定screen使用UTF-8編碼
-v 顯示版本信息
-x 進入(Attach)之前離線的screen作業
-ls或-list 顯示目前所有的screen作業
-wipe 檢查目前所有的screen作業,並刪除已經無法使用的screen作業
screen最常用操作
screen
啟動后,會創建第一個窗口,默認窗口screen 0
(從0開始)
外觀上看,就像是開了一個新的終端。
新建一個作業
指定名字是為了便於區分
screen -S
作業名稱
如:screen -S test
創建一個名字為test
的作業
列出當前所有的作業
screen -ls
進入未離線(Attached)作業
screen -x
作業序號或者名稱
screen -x 3985 #進入序號為3985的作業中
或者
screen -x test #進入名稱為test的作業中
進入已離線(Detached)作業
screen -r
作業序號或者名稱
screen -r 3985 #回到序號為3985的作業中
或者
screen -r test #回到名稱為test的作業中
遠程結束某個作業
screen -d
作業名稱
screen -d test
screen中的命令用法
screen下使用ctrl+a進入命令模式
這里只講一下退出命令:
退出screen
的作業時,有兩種方式:
- Crtl-a +d 保存進程並退出作業(程序在screen中繼續運行,screen -ls 可查看)
- Crtl-a + k 或exit 退出作業和進程(程序終止,screen -ls 不可查看)