Linux screen命令詳解

2021-10-09 08:31:04 字數 3506 閱讀 2551

目錄

安裝 screen

啟動 screen 會話

分離與重新連線 screen 會話

巢狀 screen 會話

分離並啟動新的 screen 會話

關閉 screen 會話

善用 screen

很多時候,我們都需要執行一些需要很長時間的任務。如果這時候,你的網路連線突然斷開了,那麼你之前所做的所有工作可能都會丟失,所做的工作可能都要重做一遍,這會浪費我們許多的時間,非常影響我們的工作。那麼有沒有辦法可以解決這個問題呢?

答案是肯定的,那就是使用screen命令。screen命令允許使用者在乙個視窗內使用多個終端會話,可以斷開連線,也可以重新連線已斷開連線的會話。每個會話都可以恢復連線,這樣就算會話斷開了,使用者也不必擔心資料丟失,這正好解決了我們的問題。

現在許多的 linux 發行版通常都預裝了 screen 。通過執行以下命令,可以檢視系統是否安裝了 screen :

$ screen --versionscreen version 4.06.02 (gnu) 23-oct-17
如果你的系統並未安裝 screen ,則可以執行以下命令來安裝:

$ sudo apt install screen
想要啟動乙個 screen 會話,只需輸入以下命令:

$ screen
輸入screen命令後,你會看到乙個布滿版權資訊的介面,你只需按回車或者空格鍵就可以跳過這個介面。跳過之後,你就可以看到終端介面了。這個終端和原來的終端並沒有什麼不同,你一樣可以瀏覽資料夾,開啟檔案,在原來的終端中能做到的事情,它也可以做到。

你也可以在啟動 screen 會話時,使用-s引數給會話起名字。例如,我想啟動乙個叫alvin的 screen 會話:

$ screen -s alvin
當你啟動了不止乙個 screen 會話時,這可以用來區分其他 screen 會話。

進入 screen 終端後,按ctrl a+?快捷鍵,可以檢視 screen 所附帶的所有命令:

假如你要更新系統,你輸入更新命令後,是需要等待很長時間才更新完畢的。這時,如果你沒用screen命令,一旦你的網路連線斷開了,那麼更新就會被打斷,你就必須要重新開始更新。

screen 會話的分離功能可以解決這個問題。你可以進入 screen 終端裡執行更新命令,然後輸入會話分離快捷鍵ctrl a+d,你會看到以下提示資訊:

這就表示你已經成功從 screen 會話中分離出來並回到原來的 shell 會話中了。這時,screen 會話會繼續留在後台執行更新任務。而且無論是網路斷開連線,還是關閉原來的 shell 會話,它都不會受到影響。

當然,如果你來不及按會話分離快捷鍵網路就斷開了,screen 會話也不會關閉,它一樣會繼續留在後台執行更新任務。

如果你想重新連線到已分離的 screen 會話,以檢視更新程序,只需執行以下命令:

$ screen -r
需要注意的是,該命令只適用於當前終端只啟動了乙個 screen 會話的情況。

巢狀 screen 會話,顧名思義,就是 screen 會話中的 screen 會話,是實現使用者在乙個視窗中使用多個終端的方法之一。

想要啟動乙個巢狀 screen 會話很簡單,你只需要在 screen 終端再次輸入screen命令,或者按ctrl a+c快捷鍵,這會在你原來的 screen 會話中再啟動乙個 screen 會話,而原來的 screen 會話則會在後台保持活動。

例如,你執行了top命令來監控系統的 cpu 的使用情況:

$ top
而你既不想關掉這個top程序,又想同時做其他的任務,那麼你就可以使用ctrl a+c快捷鍵來啟動乙個新的 screen 會話,這樣,你既可以保持top命令在後台執行,又可以去執行其他的任務。

而如果你想切換回執行top命令的 screen 會話,可以使用快捷鍵ctrl a+n(切換至下乙個 screen 會話)或者ctrl a+p(切換至上乙個 screen 會話)進行切換。

從 screen 會話中分離出來再啟動新的 screen 會話,也可以實現使用者在乙個視窗中使用多個終端。

例如,你啟動乙個 screen 會話,然後輸入df -h來檢視硬碟的使用情況:

$ df -h
然後你可以按ctrl a+d快捷鍵從 screen 會話中分離出來,回到原來的終端。這時你就可以再次輸入screen命令啟動乙個新的 screen 會話來執行其他的任務。

如果你想重新連線回執行df -h命令的 screen 會話,則需要先從新的 screen 會話中分離出來,然後嘗試輸入screen -r命令。這時,由於你並行啟動了多個 screen 會話,然而screen命令並不知道你想要重新連線到哪個會話中,因此,你會看到以下提示資訊:

從圖中可以看到,每個 screen 會話都有自己的 id( 4352 與 4294 )以及自己的名字(pts-0.lxlinux)。這裡可以看到兩個會話的名字都是pts-0.lxlinux,那是因為我啟動 screen 會話的時候,沒有指定名字,因此它們都以預設的名字作為自己的名字。

想要重新連線到執行df -h命令的 screen 會話,你只需在screen -r命令後面再加上會話的 id 就可以了,像這樣:

$ screen -r 4352
當然,如果在啟動 screen 會話時,你給會話指定了獨一無二的名字,那麼你也可以通過會話的名字來指定重新連線到哪個會話,例如,重新連線到名字為alvin的會話:

$ screen -r alvin
如果你並不知道 screen 會話的 id 以及名字,你也可以通過以下命令來檢視:

$ screen -ls
要關閉 screen 會話很簡單,就和關閉平常的會話一樣,你可以使用ctrl d快捷鍵,也可以輸入exit命令關閉:

$ exit
在工作中,我們總會遇到需要執行較長時間才能完成的任務,如果在執行這些任務的過程中,遇到網路中斷,那將會導致資料丟失以及時間的浪費,這將嚴重影響我們的工作。screen 允許會話斷開後程序在後台繼續執行,且支援從斷點恢復程序,這很好地解決了這問題。

Linux screen命令詳解

linux下screen主要是管理程式的,用screen管理的程序可以在使用者斷開連線的時候保持程式繼續在伺服器上執行。第一步 首先肯定是登入到linux伺服器上。敲入screen ls 命令可以看到伺服器上已有的screen。用screen s s的大寫 screen名稱可以建立乙個screen。...

linux screen 命令詳解

使用telnet或ssh遠端登入linux時,如果連線非正常中斷 遠端機器關閉 重新連線時,系統將開乙個新的session,無法恢復原來的session.screen命令可以解決這個問題。screen工具是乙個終端多路轉接器,在本質上,這意味著你能夠使用乙個單一的終端視窗執行多終端的應用。1,開啟乙...

linux screen 命令詳解

作為linux伺服器管理員,經常要使用ssh登陸到遠端linux機器上做一些耗時的操作。也許你遇到過使用telnet或ssh遠端登入linux,執行一些程式。如果這些程式需要執行很長時間 幾個小時 而程式執行過程中出現網路故障,或者客戶機故障,這時候客戶機與遠端伺服器的鏈結將終端,並且遠端伺服器沒有...