今天發現了乙個「寶貝」,就是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工具是乙個終端多路轉接器,在本質上,這意味著你能夠使用乙個單一的終端視窗執行多終端的應用。基本命令 開乙個會話,並...