Linux screen命令詳解
大家好,我是良許。
很多時(shí)候,我們都需要執(zhí)行一些需要很長時(shí)間的任務(wù)。如果這時(shí)候,你的網(wǎng)絡(luò)連接突然斷開了,那么你之前所做的所有工作可能都會(huì)丟失,所做的工作可能都要重做一遍,這會(huì)浪費(fèi)我們?cè)S多的時(shí)間,非常影響我們的工作。那么有沒有辦法可以解決這個(gè)問題呢?
答案是肯定的,那就是使用 screen 命令。screen 命令允許用戶在一個(gè)窗口內(nèi)使用多個(gè)終端會(huì)話,可以斷開連接,也可以重新連接已斷開連接的會(huì)話。每個(gè)會(huì)話都可以恢復(fù)連接,這樣就算會(huì)話斷開了,用戶也不必?fù)?dān)心數(shù)據(jù)丟失,這正好解決了我們的問題。
因此,良許想與大家分享 Screen 這個(gè)實(shí)用工具的一些功能以及用法:
安裝 Screen
現(xiàn)在許多的 Linux 發(fā)行版通常都預(yù)裝了 Screen 。通過運(yùn)行以下命令,可以查看系統(tǒng)是否安裝了 Screen :
- $ screen --version
- Screen version 4.06.02 (GNU) 23-Oct-17
如果你的系統(tǒng)并未安裝 Screen ,則可以執(zhí)行以下命令來安裝:
- $ sudo apt install screen
啟動(dòng) Screen 會(huì)話
想要啟動(dòng)一個(gè) Screen 會(huì)話,只需輸入以下命令:
- $ screen
輸入 screen 命令后,你會(huì)看到一個(gè)布滿版權(quán)信息的界面,你只需按回車或者空格鍵就可以跳過這個(gè)界面。跳過之后,你就可以看到終端界面了。這個(gè)終端和原來的終端并沒有什么不同,你一樣可以瀏覽文件夾,打開文件,在原來的終端中能做到的事情,它也可以做到。
你也可以在啟動(dòng) Screen 會(huì)話時(shí),使用 -S 參數(shù)給會(huì)話起名字。例如,我想啟動(dòng)一個(gè)叫 alvin 的 Screen 會(huì)話:
- $ screen -S alvin
當(dāng)你啟動(dòng)了不止一個(gè) Screen 會(huì)話時(shí),這可以用來區(qū)分其他 Screen 會(huì)話。
進(jìn)入 Screen 終端后,按 Ctrl a+? 快捷鍵,可以查看 Screen 所附帶的所有命令:
markdown
分離與重新連接 Screen 會(huì)話
假如你要更新系統(tǒng),你輸入更新命令后,是需要等待很長時(shí)間才更新完畢的。這時(shí),如果你沒用 screen 命令,一旦你的網(wǎng)絡(luò)連接斷開了,那么更新就會(huì)被打斷,你就必須要重新開始更新。
Screen 會(huì)話的分離功能可以解決這個(gè)問題。你可以進(jìn)入 Screen 終端里執(zhí)行更新命令,然后輸入會(huì)話分離快捷鍵 Ctrl a+d ,你會(huì)看到以下提示信息:
markdown
這就表示你已經(jīng)成功從 Screen 會(huì)話中分離出來并回到原來的 Shell 會(huì)話中了。這時(shí),Screen 會(huì)話會(huì)繼續(xù)留在后臺(tái)執(zhí)行更新任務(wù)。而且無論是網(wǎng)絡(luò)斷開連接,還是關(guān)閉原來的 Shell 會(huì)話,它都不會(huì)受到影響。
當(dāng)然,如果你來不及按會(huì)話分離快捷鍵網(wǎng)絡(luò)就斷開了,Screen 會(huì)話也不會(huì)關(guān)閉,它一樣會(huì)繼續(xù)留在后臺(tái)執(zhí)行更新任務(wù)。
如果你想重新連接到已分離的 Screen 會(huì)話,以查看更新進(jìn)程,只需執(zhí)行以下命令:
- $ screen -r
需要注意的是,該命令只適用于當(dāng)前終端只啟動(dòng)了一個(gè) Screen 會(huì)話的情況。
嵌套 Screen 會(huì)話
嵌套 Screen 會(huì)話,顧名思義,就是 Screen 會(huì)話中的 Screen 會(huì)話,是實(shí)現(xiàn)用戶在一個(gè)窗口中使用多個(gè)終端的方法之一。
想要啟動(dòng)一個(gè)嵌套 Screen 會(huì)話很簡單,你只需要在 Screen 終端再次輸入 screen 命令,或者按 Ctrl a+c 快捷鍵,這會(huì)在你原來的 Screen 會(huì)話中再啟動(dòng)一個(gè) Screen 會(huì)話,而原來的 Screen 會(huì)話則會(huì)在后臺(tái)保持活動(dòng)。
例如,你運(yùn)行了 top 命令來監(jiān)控系統(tǒng)的 CPU 的使用情況:
- $ top
markdown
而你既不想關(guān)掉這個(gè) top 進(jìn)程,又想同時(shí)做其他的任務(wù),那么你就可以使用 Ctrl a+c 快捷鍵來啟動(dòng)一個(gè)新的 Screen 會(huì)話,這樣,你既可以保持 top 命令在后臺(tái)運(yùn)行,又可以去執(zhí)行其他的任務(wù)。
而如果你想切換回執(zhí)行 top 命令的 Screen 會(huì)話,可以使用快捷鍵 Ctrl a+n (切換至下一個(gè) Screen 會(huì)話)或者 Ctrl a+p (切換至上一個(gè) Screen 會(huì)話)進(jìn)行切換。
分離并啟動(dòng)新的 Screen 會(huì)話
從 Screen 會(huì)話中分離出來再啟動(dòng)新的 Screen 會(huì)話,也可以實(shí)現(xiàn)用戶在一個(gè)窗口中使用多個(gè)終端。
例如,你啟動(dòng)一個(gè) Screen 會(huì)話,然后輸入 df -h 來查看硬盤的使用情況:
- $ df -h
markdown
然后你可以按 Ctrl a+d 快捷鍵從 Screen 會(huì)話中分離出來,回到原來的終端。這時(shí)你就可以再次輸入 screen 命令啟動(dòng)一個(gè)新的 Screen 會(huì)話來執(zhí)行其他的任務(wù)。
如果你想重新連接回運(yùn)行 df -h 命令的 Screen 會(huì)話,則需要先從新的 Screen 會(huì)話中分離出來,然后嘗試輸入 screen -r 命令。這時(shí),由于你并行啟動(dòng)了多個(gè) Screen 會(huì)話,然而 screen 命令并不知道你想要重新連接到哪個(gè)會(huì)話中,因此,你會(huì)看到以下提示信息:
markdown
從圖中可以看到,每個(gè) Screen 會(huì)話都有自己的 ID( 4352 與 4294 )以及自己的名字( pts-0.lxlinux )。這里可以看到兩個(gè)會(huì)話的名字都是 pts-0.lxlinux ,那是因?yàn)槲覇?dòng) Screen 會(huì)話的時(shí)候,沒有指定名字,因此它們都以默認(rèn)的名字作為自己的名字。
想要重新連接到運(yùn)行 df -h 命令的 Screen 會(huì)話,你只需在 screen -r 命令后面再加上會(huì)話的 ID 就可以了,像這樣:
- $ screen -r 4352
當(dāng)然,如果在啟動(dòng) Screen 會(huì)話時(shí),你給會(huì)話指定了獨(dú)一無二的名字,那么你也可以通過會(huì)話的名字來指定重新連接到哪個(gè)會(huì)話,例如,重新連接到名字為 alvin 的會(huì)話:
- $ screen -r alvin
如果你并不知道 Screen 會(huì)話的 ID 以及名字,你也可以通過以下命令來查看:
- $ screen -ls
關(guān)閉 Screen 會(huì)話
要關(guān)閉 Screen 會(huì)話很簡單,就和關(guān)閉平常的會(huì)話一樣,你可以使用 Ctrl d 快捷鍵,也可以輸入 exit 命令關(guān)閉:
- $ exit
markdown
善用 Screen
在工作中,我們總會(huì)遇到需要執(zhí)行較長時(shí)間才能完成的任務(wù),如果在執(zhí)行這些任務(wù)的過程中,遇到網(wǎng)絡(luò)中斷,那將會(huì)導(dǎo)致數(shù)據(jù)丟失以及時(shí)間的浪費(fèi),這將嚴(yán)重影響我們的工作。Screen 允許會(huì)話斷開后進(jìn)程在后臺(tái)繼續(xù)運(yùn)行,且支持從斷點(diǎn)恢復(fù)進(jìn)程,這很好地解決了這問題。
而且 screen 命令還使我們可以利用一個(gè)窗口來同時(shí)執(zhí)行多個(gè)任務(wù),這對(duì)我們工作是非常有用的。因此,為了避免數(shù)據(jù)丟失以及節(jié)省時(shí)間,我們應(yīng)該多用 screen 命令。最后,如果你還對(duì) screen 命令有疑問,請(qǐng)留言告訴我唄!
本文轉(zhuǎn)載自微信公眾號(hào)「良許Linux」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系良許Linux公眾號(hào)。