linux中強大的screen命令

2022-03-20 09:04:40 字數 3889 閱讀 6726

今天發現了乙個「寶貝」,就是linux的screen命令,對於遠端登入來說,不僅提供了類似於nohup的功能,而且提供了我非常喜歡的「多個桌面」的功能。

平常開乙個putty遠端登入,經常需要在兩個程式之間來回切換,怎麼辦?ctrl-z和fg、bg?這些太麻煩了。其實我們可以借助screen命令來實現輕鬆便捷的切換。

「首 先用screen [-s]命令建立乙個session,然後就可以在這個session中建立多個window了。使用screen [-s]可以建立多個session,而每個session又可以建立多個window。在不同的window之間可以用ctrl-a n/p等命令來切換。而想要在多個session之間切換,則需要你ctrl-a d回到登入session(就像一棵大樹的根),然後再通過screen -ls檢視有哪些session,然後使用screen -r來決定恢復到哪個session。對於已經attached session則不能直接screen -r,需要先screen -d,然後才能screen -r」

【**1】

系統管理員經常需要遠端登入伺服器

然後在伺服器上跑一些程式

有個時候

得跑很長時間(超過12小時)

這是如果程式沒結束就退出遠端管理終端

遠端跑的程式很有可能就此當掉

以前常用的解決方式是用命令nohup

但是nohup也有很多的問題

當有了screen

這一切便都迎刃而解了

敲入命令screen

會建立乙個跑著shell的單一視窗

在這裡面

你可以跑你所需要的程式

然後ctrl+a d退出剛建立的視窗(回到進入screen前的環境)

然後再敲入命令screen建立新的終端視窗

就這樣你可以建立多個有shell的視窗(這些視窗裡都可以跑你自己的應用)

這樣就是你退出遠端管理視窗(進入screen的環境)

你的screen窗間的視窗都不會關閉

裡面跑得應用自然也不會當掉

用screen -ls可以看所有的screen sessions

用screen -r sessionid可以進sessionid指定的特定的screen session

最後screen session不再使用的時候

screen -r sessionid進去

exit退出即可

例項:說明看了那麼多,讓我們用乙個實際例子來結束我們今天的學習。

在我們開啟乙個screen後,然後使用joe編輯乙個檔案,之後因為臨時需要離開這時就可以執行ctrl+a d,顯示如下:

[becks@ec-base becks]$ screen

[detached]

這個時候當我們執行ps -e 可以看到pts/2這個我剛剛執行的screen正在執行joe

6264 pts/2 00:00:00 bash

6354 pts/2 00:00:00 joe

而當我們回來後想恢復這個session,只需要鍵入screen -r,而當你有多個session時候,系統將提示你選擇乙個,如下:

[becks@ec-base becks]$ screen -r

there are several suitable screens on:

6263.pts-1.ec-base (detached)

6382.pts-1.ec-base (detached)

type "screen [-d] -r [pid.]tty.host" to resume one of them.

輸入該session的pid進行恢復

[becks@becks becks]$ screen -r 6263

想退出screen的session,和退出shell一樣,只需要鍵入exit命令,成功退出後將有以下提示

[screen is terminating]

【**2】

linux screen 命令詳解

功能說明:

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

語  法:

screen [-amrvx -ls -wipe][-d 《作業名稱》][-h 《行數》][-r 《作業名稱》][-s ][-s 《作業名稱》]

補充說明:

screen為多重視窗管理程式。此處所謂的視窗,是指乙個全螢幕的文字模式畫面。通常只有在使用telnet登入主機或是使用老式的終端機時,才有可能用到screen程式。

參  數:

-a  將所有的視窗都調整為目前終端機的大小。

-d 《作業名稱》  將指定的screen作業離線。

-h 《行數》  指定視窗的緩衝區行數。

-m  即使目前已在作業中的screen作業,仍強制建立新的screen作業。

-r 《作業名稱》  恢復離線的screen作業。

-r  先試圖恢復離線的作業。若找不到離線的作業,即建立新的screen作業。

-s  指定建立新視窗時,所要執行的shell。

-s 《作業名稱》  指定screen作業的名稱。

-v  顯示版本資訊。

-x  恢復之前離線的screen作業。

-ls或--list  顯示目前所有的screen作業。

-wipe  檢查目前所有的screen作業,並刪除已經無法使用的screen作業。

常用screen引數:

screen -s yourname -> 新建乙個叫yourname的session

screen -ls -> 列出當前所有的session

screen -r yourname -> 回到yourname這個session

screen -d yourname -> 遠端detach某個session

screen -d -r yourname -> 結束當前session並回到yourname這個session

在每個screen session 下,所有命令都以 ctrl+a(c-a) 開始。

c-a ? -> help,顯示簡單說明

c-a c -> create,開啟新的 window

c-a n -> next,切換到下個 window 

c-a p -> previous,前乙個 window 

c-a 0..9 -> 切換到第 0..9 個window

ctrl+a [space] -> 由視窗0循序換到視窗9

c-a c-a -> 在兩個最近使用的 window 間切換 

c-a x -> 鎖住當前的 window,需用使用者密碼解鎖

c-a d -> detach,暫時離開當前session,將目前的 screen session (可能含有多個 windows) 丟到後台執行,並會回到還沒進 screen 時的狀態,此時在 screen session 裡    每個 window 內執行的 process (無論是前台/後台)都在繼續執行,即使 logout 也不影響。 

c-a z -> 把當前session放到後台執行,用 shell 的 fg 命令則可回去。

c-a w -> windows,列出已開啟的 windows 有那些 

c-a t -> time,顯示當前時間,和系統的 load 

c-a k -> kill window,強行關閉當前的 window

原文:

linux中強大的screen命令

今天發現了乙個 寶貝 就是linux的screen命令,對於遠端登入來說,不僅提供了類似於nohup的功能,而且提供了我非常喜歡的 多個桌面 的功能。平常開乙個putty遠端登入,經常需要在兩個程式之間來回切換,怎麼辦?ctrl z和fg bg?這些太麻煩了。其實我們可以借助screen命令來實現輕...

linux系統中強大的screen命令

screen 命令可能很多使用者還沒感受到,下面介紹的就是linux系統中強大的screen命令,具體內容如下所述。因為做二代測序分析的原因,經常需要執行很長時間的程式。由於時間很長,一直都沒什麼太好的辦法。當有了screen,這一切便都迎刃而解了。敲入命令screen會建立乙個跑著shell的單一...

Linux終端下的強大工具screen的認識

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