[轉載]Unix/Linux 工具: Screen 命令使用

來源:互聯網
上載者:User
最近同事給我介紹Screen 命令,真是不錯。以前為了讓程式在脫離終端的情況下運行,要麼讓它在後台運行,要麼使用nohup運行,但是如果需要互動的程式就麻煩了。例如,你需要使用scp拷貝,需要輸入密碼,而且資料量很大,需要很長時間。遇到過的人就知道痛苦了。

有了screen,一切都簡單了。這裡把一篇介紹的文章轉貼過來,使用還是很方便的。

screen your screen
文:林思敬
電子郵件:becks.lin@ec-base.com

前言
screen 是什麼

根據其man介紹,screen是個多元化多功能的全屏視窗管理器,每個虛擬終端都可以為你提供DEC VT100 terminal的功能,
也許你會問:DEC VT100
terminal又是什麼?如果你登陸過某些字元介面的BBS,或許你會記得在註冊時,其要求你輸入你的終端機型別,而一般預設就是我們剛剛提到的DEC
VT100 termina了.另外screen還附加提供了比如SO 6429 (ECMA 48, ANSI X3.64) and ISO
2022 standards的操作功能.

screen 可以做些什麼
如果在以前或許screen 是你登陸 bbs 站的好伴侶,但是相信現在大家都是直接登陸圖形介面的也就是WEB介面的BBS.當你正在登陸多個BBS而又不想在多個視窗之間切換.那麼screen就可以幫你的忙了。

當然screen可不是專為BBS服務,
它可以讓你只需要開啟一個終端視窗就可以地處理很多的(進程)事情,舉個例子:你正在shell上編寫某個程式,碰巧你又需要重新啟動某個服務,同時還要
FTP上傳個大檔案,這個時候就可以使用調用screen,只需要按下3個鍵就可以無須用滑鼠在3個視窗間切換.又或者你使用PUTTY等工具登陸到服務
器,不想在退出時關閉當前的進程,比如你正在複製檔案等.這個時候就可以利用screen讓你複製檔案這個前台進程享受後台進程的"待遇"。

正是因為screen的種種實用功能 ,已經成為不少*unix玩家的必備利器,讓*unix的日常操作管理更加方便。

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
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]

screen的簡單用法就介紹到這裡,更多的功能和應有請讀者參考MAN自行研究.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.