screen後台執行命令

  • 2019 年 11 月 12 日
  • 筆記

1、背景

系統管理員經常需要SSH 或者telent 遠程登錄到Linux 伺服器,經常運行一些需要很長時間才能完成的任務,比如系統備份、ftp 傳輸等等。通常情況下我們都是為每一個這樣的任務開一個遠程終端窗口,因為它們執行的時間太長了。必須等待它們執行完畢,在此期間不能關掉窗口或者斷開連接,否則這個任務就會被殺掉,一切半途而廢了。

2、簡介

GNU Screen是一款由GNU計劃開發的用於命令行終端切換的自由軟體。用戶可以通過該軟體同時連接多個本地或遠程的命令行會話,並在其間自由切換。

GNU Screen可以看作是窗口管理器的命令行介面版本。它提供了統一的管理多個會話的介面和相應的功能。

1.會話恢復

2.多窗口

3.會話共享

GNU's Screen 官方站點:http://www.gnu.org/software/screen/

3、語法

 參數說明   -A 將所有的視窗都調整為目前終端機的大小。   -d<作業名稱>  將指定的screen作業離線。   -h<行數>  指定視窗的緩衝區行數。   -m 即使目前已在作業中的screen作業,仍強制建立新的screen作業。   -r<作業名稱>  恢復離線的screen作業。   -R 先試圖恢復離線的作業。若找不到離線的作業,即建立新的screen作業。   -s 指定建立新視窗時,所要執行的shell。   -S<作業名稱>  指定screen作業的名稱。   -v 顯示版本資訊。   -x 恢復之前離線的screen作業。   -ls或--list  顯示目前所有的screen作業。   -wipe 檢查目前所有的screen作業,並刪除已經無法使用的screen作業。

4、常用screen參數

 screen -Syourname -> 新建一個叫yourname的session   screen -ls -> 列出當前所有的session   screen -r yourname -> 回到yourname這個session   screen -d yourname -> 遠程detach某個session   screen -d -r yourname -> 結束當前session並回到yourname這個session

5、使用 screen

5.1安裝screen

Linux發行版(例如Red Hat Enterprise Linux)通常會自帶screen實用程式,如果沒有的話,可以從GNU screen的官方網站下載。

 [root@docker-01 ~]# yum install screen

5.2創建一個新的窗口

安裝完成後,直接敲命令screen就可以啟動它。但是這樣啟動的screen會話沒有名字,實踐上推薦為每個screen會話取一個名字,方便分辨:

 [root@docker-01 ~]# screen -S david 

screen啟動後,會創建第一個窗口,也就是窗口No. 0,並在其中打開一個系統默認的shell,一般都會是bash。所以你敲入命令screen之後,會立刻又返回到命令提示符,彷彿什麼也沒有發生似的,其實你已經進入Screen的世界了。當然,也可以在screen命令之後加入你喜歡的參數,使之直接打開你指定的程式,例如:

screen創建一個執行vi david.txt的單窗口會話。

 [root@docker-01 ~]# screen vim david.txt

在screen當前窗口鍵入快捷鍵Ctrl+a+d

5.3重新連接會話

過了一段時間,你想繼續操作之前的命令,做如下操作即可:

找到該screen會話:

 [root@docker-01 ~]# screen -ls   There is a screen on:          19005.david     (Attached)   1Socket in/var/run/screen/S-root.

重新連接會話:

 [root@docker-01 ~]# screen -r 19005

5.4退出會話:

如果你的備份命令執行完了,不想再使用screen會話了,可以使用exit命令退出會話。

 [root@docker-01 ~]# exit   [root@docker-01 ~]# screen -ls   No Sockets found in/var/run/screen/S-root.