文章目錄
- 一、screen
- 二、功能
- 三、使用
- 3.1 安裝
- 3.2 常用參數
- 3.3 狀態
- 3.4 使用
- 3.4.1 終端列表
- 3.4.2 新建screen
- 3.4.3 detached
- 3.4.4 回到終端
- 3.4.5 清除終端
一、screen
screen為多視窗管理程序。在服務器上搭建一些服務的時候,經常要用到screen命令。例如某些服務開啟時需要占據一整個控制臺,如果關閉了就會導致進程終止。此時就可使用screen來在服務器上開啟多個視窗(screen),以容納運行不同的任務。
二、功能
screen的功能大體分為三個:
- 會話恢復
- 只要screen服務沒有被停止,則在其內部運行的會話都可以恢復
- 即使網絡連接中斷,用戶也不會失去對已經打開的命令行會話的控制,只要再次登錄到主機上執行
screen -r
就可以恢復會話 - 在暫時離開的時候,也可執行分離命令detach,保證里面的程序正常運行的情況下讓screen掛起
- 多窗口
- 在screen環境下,所有的會話都獨立運行,擁有各自的編號、輸入、輸出和窗口緩存
- 用戶可通過快捷鍵在不同的窗口下切換,并可自由地重定向各個窗口的輸入和輸出
- 會話共享
- screen可讓一個或多個用戶從不同終端多次登錄一個會話,并共享會話的所有特性
三、使用
3.1 安裝
[root@server ~]# yum install -y screen
[root@server ~]# screen -v
Screen version 4.01.00devel (GNU) 2-May-06
3.2 常用參數
-A Adapt all windows to the new display width & height.
-d <作業名稱> 將指定的screen作業離線放入后臺
-h <行數> 指定視窗的緩沖區行數
-r <作業名稱> 恢復離線的screen作業
-R 先試圖恢復離線的作業,若找不到離線的作業,則建立新的screen作業
-s 指定建立新screen時所要執行的shell Shell to execute rather than $SHELL
-S <作業名稱> 指定screen作業的名稱 Name this session <pid>.sockname instead of <pid>.<tty>.<host>
-ls or --list 顯示目前所有的screen作業
-wipe 檢查目前所有的screen作業,并刪除已經無法使用的作用
3.3 狀態
通常情況,screen創建的虛擬終端,有兩個工作模式:
- attached,表示當前screen正在作為主終端使用,為活躍狀態
- detached,表示當前screen正在后臺使用,為非激活狀態
3.4 使用
3.4.1 終端列表
[root@server ~]# screen -ls
No Sockets found in /var/run/screen/S-root.[root@server ~]#
3.4.2 新建screen
[root@server ~]# screen -S hello# pid.name
[root@server ~]# screen -ls
There is a screen on:6359.hello (Attached)
1 Socket in /var/run/screen/S-root.
3.4.3 detached
# 在screen會話內,按Ctrl + a + d,即可保持這個screen到后臺并返回到主終端
[detached from 6359.hello]# 狀態已發生變化 -> Detached
[root@server ~]# screen -ls
There is a screen on:6359.hello (Detached)
1 Socket in /var/run/screen/S-root.
3.4.4 回到終端
通過-r
參數回到指定screen終端,其內容仍是之前返回主終端前的內容。
[root@server ~]# screen -r hello
[root@server ~]# screen -ls
There is a screen on:6359.hello (Attached)
1 Socket in /var/run/screen/S-root.[root@server ~]#
3.4.5 清除終端
可在終端內直接鍵入exit
或使用按鍵Ctrl + D
,便可清除掉當前終端。
[screen is terminating]
[root@server ~]# screen -ls
No Sockets found in /var/run/screen/S-root.
參考:
screen命令