linux中強大的screen命令

來源:互聯網
上載者:User

原文連結:http://hi.baidu.com/tjuer/item/a3452480db2aa92b100ef38b

今天發現了一個“寶貝”,就是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退出即可

Unix/Linux 工具: Screen 命令使用
screen使用
使用screen非常簡易.只需在SHELL鍵入screen,便可開啟一個screen session。
而在每個screen session 下,所有命令都以 ctrl+a(C-a) 開始。
現在讓我來簡單介紹基本的命令
C-a c -> Create,開啟新的 window
C-a n -> Next,切換到下個 window
C-a p -> Previous,前一個 window
more..
C-a C-a -> Other,在兩個 window 間切換
C-a w -> Windows,列出已開啟的 windows 有那些
C-a 0 -> 切換到第 0 個 window
C-a 1..9 -> 切換到第 1..9 個window
C-a a -> 發出 C-a,在 emacs, ve, bash, tcsh 下可移到行首
C-a t -> Time,顯示目前時間,和系統的 load
C-a K(大寫) -> kill window,強行關閉當前的 window
C-a [ -> 進入 copy mode,在 copy mode 下可以復原、搜尋、
複製就像用使用 vi 一樣
C-b Backward,PageUp
C-f Forward,PageDown
H(大寫) High,將游標移至左上方
L Low,將游標移至左下角
0 移到行首
$ 行末
w forward one word,以字為單位往前移
b backward one word,以字為單位往後移
Space 第一次按為標記區起點,第二次按為終點
Esc 結束 copy mode
C-a ] -> Paste,把剛剛在 copy mode 選定的內容貼上
C-a ? -> Help,顯示簡單說明
C-a d -> detach,將目前的 screen session (可能含有多個 windows)
丟到後台執行 當按了 C-a d 把 screen session detach 掉後,會回到還沒進 screen 時的狀態,此時在 screen session 裡每個 window 內啟動並執行 process (無論是前台/後台)都在繼續執行,即使 logout 也不影響。
下次 login 進來時:
screen -ls -> 顯示所有的 screen sessions
screen -r [keyword] -> 選擇一個screen session 恢複對話
若 screen -ls 裡有 Attached sessions:
screen -d [keyword] -> 強制 detach,以便「接手」過來

執行個體:
說明看了那麼多,讓我們用一個實際例子來結束我們今天的學習。
在我們開啟一個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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.