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

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