在什麼情況下使用該命令
系統管理員經常需要SSH 或者telent 遠程登錄到Linux 服務器,經常運行一些需要很長時間才能完成的任務,比如系統備份、ftp 傳輸等等。通常情況下我們都是爲每一個這樣的任務開一個遠程終端窗口,因爲它們執行的時間太長了。必須等待它們執行完畢,在此期間不能關掉窗口或者斷開連接,否則這個任務就會被殺掉,一切半途而廢了。
功能
會話恢復
多窗口
會話共享
語法
# screen [-AmRvx -ls -wipe][-d <作業名稱>][-h <行數>][-r <作業名稱>][-s ][-S <作業名稱>]
參數說明
-A 將所有的視窗都調整爲目前終端機的大小。
-d <作業名稱> 將指定的screen作業離線。
-h <行數> 指定視窗的緩衝區行數。
-m 即使目前已在作業中的screen作業,仍強制建立新的screen作業。
-r <作業名稱> 恢復離線的screen作業。
-R 先試圖恢復離線的作業。若找不到離線的作業,即建立新的screen作業。
-s 指定建立新視窗時,所要執行的shell。
-S <作業名稱> 指定screen作業的名稱。
-v 顯示版本信息。
-x 恢復之前離線的screen作業。
-ls或--list 顯示目前所有的screen作業。
-wipe 檢查目前所有的screen作業,並刪除已經無法使用的screen作業。
使用yum命令安裝screen程序包:
#yum install screen
創建與使用會話功能
完成安裝後直接運行screen即可使用服務,推薦爲每個會話取一個名字,方便分辨
創建名稱爲backup的會話:
#screen -S backup
查看當前已經存在的會話:
[root@linuxprobe~]# screen -ls
There is a screenon:
32230.backup(Attached)
1 Socket in/var/run/screen/S-root.
當執行screen命令後會調用系統默認的shell(通常即bash),所以敲完screen命令後會立即返回一個命令提示符,雖然看起來與剛剛沒有變化,但此時你已經進入screen會話啦!
創建一個會話,初始爲用vim編輯器寫文件:
[root@linuxprobe~]# screen vim memo.txt
退出vim後會話也會被自動被刪除:
[root@linuxprobe~]# screen -ls
There is a screenon:
32230.backup(Attached)
1 Socket in /var/run/screen/S-root.
新建一個叫做linuxprobe的會話:
[root@linuxprobe~]# screen -S linuxprobe
列出當前所有會話(有兩個哦):
[root@linuxprobe~]# screen --ls
There are screenson:
32403.linuxprobe(Attached)
32230.backup(Attached)
2 Sockets in/var/run/screen/S-root.
回到backup會話中:
[root@linuxprobe~]# screen -r backup
將linuxprobe會話離線:
[root@linuxprobe~]# screen -d linuxprobe
[remote detachedfrom 32403.linuxprobe]
再次查看會話狀態(linuxprobe已經被離線了):
[root@linuxprobe~]# screen -ls
There are screenson:
32403.linuxprobe(Detached)
32230.backup(Attached)
2 Sockets in/var/run/screen/S-root.
將當前會話離線並回到linuxprobe會話中:
[root@linuxprobe~]# screen -d -r linuxprobe
[32403.linuxprobedetached.]
回到linuxprobe會話後,狀態又改變了:
[root@linuxprobe~]# screen -ls
There are screenson:
32403.linuxprobe (Attached)
32230.backup(Attached)
2 Sockets in/var/run/screen/S-root.
[/pre]
總結來說:將screen會話甚至爲暫時斷開(detach),那麼會話窗口中的程序依然會執行。隨後將會話重新連接(attach),那麼即可重新控制會話窗口中運行的程序啦。
共享功能
會話共享功能是一件很酷的事,它讓多個用戶同時使用某一個會話,甚至讓您和對方看到相同的終端內容,拓撲如下:
將兩臺Linux主機均連入同一個服務器:
在主機A的終端上執行創建會話的操作:
[root@linuxprobe ~]# screen -S linuxprobe
在主機B的終端上同步會話信息:
[root@linuxprobe ~]# screen -x
那麼此時終端A與終端B上做的任何操作,都可以實時同步到對方的屏幕上,真的很酷哦!