Note: 此文章自網路上收集 系統管理員經常需要遠端登入伺服器,然後在伺服器上跑一些程式 有個時候得跑很長時間(超過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.. less.. 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] |
相關資源 >