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.