大家在使用SSH或telnet遠程連接服務器時,可能都遇到為一些長時間運行的任務而頭疼,比如系統備份、ftp 傳輸等等。通常情況下我們都是為每一個這樣的任務開一個遠程終端窗口,因為他們執行的時間太長了。必須等待它執行完畢,在此期間可不能關掉窗口或者斷開連 接,否則這個任務就會被殺掉,一切半途而廢了。也許nohup命令可以達到這個目的,如果程序的標準輸出/標準錯誤是終端, nohup默認將其重定向到nohup.out文件。值得注意的是nohup命令只是使得程序忽略SIGHUP信號,還需要使用標記&把它放在后 臺運行。
nohup <command> [argument…] &
雖然nohup很容易使用,但還是比較“簡陋”的,對于簡單的命令能夠應付過來,對于復雜交互的程序就麻煩了。那么現在過來瞧瞧screen吧!
1、什么是screen?
screen是一個可以在多個進程之間多路復用一個物理終端的窗口管理器。screen中有會話的概念,用戶可以在一個screen會話中創建多個 screen窗口,在每一個screen窗口中就像操作一個真實的telnet/SSH連接窗口那樣。當斷開或關閉終端時,只要不殺死screen的進 程,待重新連接后任能繼續斷開前的操作。
2、screen參數及組合鍵
啟動screen方式有兩種,一種是直接在命令提示符下輸入screen,這時Screen將創建一個執行shell的全屏窗口。你可以執行任意 shell程序,就像在ssh窗口中那樣。在該窗口中鍵入exit退出該窗口,如果這是該screen會話的唯一窗口,該screen會話退出,否則 screen自動切換到前一個窗口。另一種方式是在screen命令后跟你要執行的程序,例如“ screen ftp”,Screen創建一個執行ftp命令的單窗口會話,退出ftp將退出該窗口/會話。
2.1 screen常用的命令選項
screen的語法格式如下:
screen [ -options ] [ cmd [ args ] ]
常用的選項有:
-c file 使用配置文件file,而不使用默認的$HOME/.screenrc
-d|-D [pid.tty.host] 不開啟新的screen會話,而是斷開其他正在運行的screen會話
-h<行數> 指定視窗的緩沖區行數。
-m 即使目前已在會話中的screen會話,仍強制建立新的screen會話。
-r sessionowner/ [pid.tty.host] 重新連接一個斷開的會話。多用戶模式下連接到其他用戶screen會話需要指定sessionowner,需要setuid-root權限。
-R 先試圖恢復離線的會話。若找不到離線的會話,即建立新的screen會話。
-s 指定建立新screen會話時,所要執行的shell。
-S sessionname 創建screen會話時為會話指定一個名字
-v 顯示版本信息。
-x 恢復之前離線的screen會話。
-ls或--list 顯示目前所有的screen會話。
-wipe 檢查目前所有的screen會話,并刪除已經無法使用的screen會話。
2.2 screen常用的組合鍵
3、screen的使用
例如當我們ssh登錄服務器后,使用scp在傳輸大文件時,通常的情況就是要耐心的等待文件傳輸完成才能將終端關閉,那么下面來看看通過screen帶來的方便。
首先使用ssh登錄服務器,在命令提示符下輸入screen:
# screen
在screen shell中輸入scp命令,輸入密碼后開始文件傳輸。如果不愿意等待,那么直接按下”Ctrl+a+d”的組合鍵,或者關閉當前的終端,隨便怎么操作,只要不殺死screen會話就行。
# scp -r images 172.16.78.111:~
root@172.16.78.111's password:
mondorescue.iso 0% 22MB 22.2MB/s 00:01
使用screen -ls可以查看當前系統所打開的screen會話,如下:
# screen -ls
There are screens on:
20642.pts-1.white (Detached)
20713.pts-1.white (Detached)
2 Sockets in /tmp/screens/S-root.
若要其中的會話,則輸入screen -r PID,如下:
# screen -r 20713
執行該命令后,馬上就能看到剛才正在進行的scp命令的完成情況,是不是很方便?通過man screen可以看到更詳細的screen的參數以及用法。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
