查看完整版本: Linux 底下 「screen」指令的使用


plurk 2010-3-2 16:58

Linux 底下 「screen」指令的使用

<P>系統管理員經常需要遠端登錄伺服器<BR>然後在伺服器上跑一些程式<BR>有個時候 <BR>得跑很長時間(超過12小時)<BR>這是如果程式沒結束就退出遠端管理終端<BR>遠端跑的程式很有可能就此當掉<BR>以前常用的解決方式是用命令nohup<BR>但是nohup也有很多的問題<BR>當有了screen 這一切便都迎刃而解了......<BR><BR>敲入命令screen<BR>會創建一個跑著shell的單一視窗<BR>在這裏面<BR>你可以跑你所需要的程式<BR>然後「Ctrl-a + d 」退出剛創建的視窗(回到進入screen前的環境)<BR>然後再敲入命令screen創建新的終端視窗<BR>就這樣 你可以建立多個有shell的視窗(這些視窗裏都可以跑你自己的應用)<BR>這樣就是你退出遠端管理視窗(進入screen的環境)<BR>你的screen窗間的窗口都不會關閉<BR>裏面跑得應用程式自然也不會當掉</P>
<P><BR>用screen -ls可以看所有的screen sessions<BR>最後<BR>screen session不再使用的時候<BR>screen -r sessionid進去<BR>exit退出即可 <BR><BR>Unix/Linux 工具: Screen 命令使用<BR>screen使用<BR>使用screen非常簡易.只需在SHELL鍵入screen,便可打開一個screen session。<BR>而在每個screen session 下,所有命令都以 ctrl+a(C-a) 開始。<BR></P>
<P>現在讓我來簡單介紹基本的命令<BR>C-a c -&gt; Create == 開啟新的 window<BR>C-a n -&gt; Next == 切換到下個 window<BR>C-a p -&gt; Previous == 前一個 window<BR>C-a C-a -&gt; Other == 在兩個 window 間切換<BR>C-a w -&gt; Windows == 列出已開啟的 windows 有那些<BR>C-a 0 -&gt; 切換到第 0 個 window<BR>C-a 1..9 -&gt; 切換到第 1..9 個window<BR>C-a a -&gt; 發出 C-a,在 emacs, ve, bash, tcsh 下可移到行首<BR>C-a t -&gt; Time,顯示當前時間,和系統的 load<BR>C-a K(大寫) -&gt; kill window,強行關閉當前的 window<BR>C-a [ -&gt; 進入 copy mode,在 copy mode 下可以回滾、搜索、複製就像用使用 vi 一樣<BR>C-b Backward,PageUp<BR>C-f Forward,PageDown <BR>H(大寫) High,將游標移至左上角<BR>L Low,將游標移至左下角<BR>0 移到行首<BR>$ 行末<BR>w forward one word,以字為單位往前移<BR>b backward one word,以字為單位往後移<BR>Space 第一次按為標記區起點,第二次按為終點<BR>Esc 結束 copy mode<BR><BR>C-a ] -&gt; Paste,把剛剛在 copy mode 選定的內容貼上<BR>C-a ? -&gt; Help,顯示簡單說明<BR>C-a d -&gt; detach,將目前的 screen session (可能含有多個 windows)<BR>   </P>
<P>丟到後臺執行當按了 C-a d 把 screen session detach 掉後,會回到還沒進 screen 時的狀態,此時在 screen session 裏每個 window 內運行的 process (無論是前臺/後臺)都在繼續執行,即使 logout 也不影響。下次 login 進來時:screen -ls -&gt; 顯示所有的 screen sessions<BR>screen -r [keyword] -&gt; 選擇一個screen session 恢復對話若 screen -ls 裏有 Attached sessions:<BR>screen -d [keyword] -&gt; 強制 detach,以便「接手」過來<BR><BR>實例<BR>   說明看了那麼多,讓我們用一個實際例子來結束我們今天的學習。在我們開啟一個screen後,然後使用joe編輯一個檔,之後因為臨時需要離開這時就可以運行Ctrl+a d,顯示如下:<BR>[becks@ec-base becks]$ screen<BR>[detached]<BR>這個時候當我們運行ps -e 可以看到pts/2這個我剛剛運行的screen正在運行joe<BR>   6264 pts/2 00:00:00 bash<BR>   6354 pts/2 00:00:00 joe<BR>而當我們回來後想恢復這個session,只需要鍵入screen -r,而當你有多個session時候,系統將提示你選擇一個,如下:<BR>[becks@ec-base becks]$ screen -r<BR>There are several suitable screens on:<BR>   6263.pts-1.ec-base (Detached)<BR>   6382.pts-1.ec-base (Detached)<BR>   Type "screen [-d] -r [pid.]tty.host" to resume one of them.輸入該session的pid進行恢復<BR>[becks@becks becks]$ screen -r 6263<BR>想退出screen的session,和退出shell一樣,只需要鍵入exit命令,成功退出後將有以下提示<BR>[screen is terminating]</P>
<P>&nbsp;</P>
<P>From: <A href="http://blog.roodo.com/albertarea/archives/3358957.html" target=_blank>http://blog.roodo.com/albertarea/archives/3358957.html</A></P>

bigtitsggg 2010-5-9 11:05

天才

:) :lol :victory:
看看去囉謝謝分享~~
不能同意你更多
我要好好必記下來
:time: :kiss:
頁: [1]
查看完整版本: Linux 底下 「screen」指令的使用