天天看點

screen使用方法

yum install screen

1、建立screen會話

screen java -jar start.jar

2、離開screen,但是保留裡面的程式操作是Ctrl+a d

3、恢複會話

先檢視目前screen裡的會話 screen -ls

screen -r (程序名或程序号)   :實際執行指令時是沒有括号的,這裡隻是為了說明

4、關閉會話

Ctrl+c或者exit

常用快捷鍵

Ctrl+a c :在目前screen會話中建立視窗

Ctrl+a w :視窗清單

Ctrl+a n :下一個視窗

Ctrl+a p :上一個視窗

Ctrl+a 0-9 :在第0個視窗和第9個視窗之間切換

screen啟動會話時如果是直接執行 screen java -jar start.jar 會有兩個程序在跑,解決辦法是

先執行screen,在會話視窗裡面再執行你要的程式或任務

使用 screen 很友善,有以下幾個常用選項:

  • screen -dmS session name

    來建立一個處于斷開模式下的會話(并指定其會話名)。
  • screen -list 

    來列出所有會話。
  • screen -r session name

    來重新連接配接指定會話。
  • 用快捷鍵

    CTRL-a d 

    來暫時斷開目前會話。
screen 示例
[[email protected] ~]# screen -dmS Urumchi
[[email protected] ~]# screen -list
There is a screen on:
        12842.Urumchi   (Detached)
1 Socket in /tmp/screens/S-root.

[[email protected] ~]# screen -r Urumchi      

當我們用“-r”連接配接到 screen 會話後,我們就可以在這個僞終端裡面為所欲為,再也不用擔心 HUP 信号會對我們的程序造成影響,也不用給每個指令前都加上“nohup”或者“setsid”了。這是為什麼呢?讓我來看一下下面兩個例子吧。

1. 未使用 screen 時新程序的程序樹
[[email protected] ~]# ping www.google.com &
[1] 9499
[[email protected] ~]# pstree -H 9499
init─┬─Xvnc
     ├─acpid
     ├─atd
     ├─2*[sendmail]	
     ├─sshd─┬─sshd───bash───pstree
     │       └─sshd───bash───ping      

我們可以看出,未使用 screen 時我們所處的 bash 是 sshd 的子程序,當 ssh 斷開連接配接時,HUP 信号自然會影響到它下面的所有子程序(包括我們建立立的 ping 程序)。

2. 使用了 screen 後新程序的程序樹
[[email protected] ~]# screen -r Urumchi
[[email protected] ~]# ping www.ibm.com &
[1] 9488
[[email protected] ~]# pstree -H 9488
init─┬─Xvnc
     ├─acpid
     ├─atd
     ├─screen───bash───ping
     ├─2*[sendmail]      

而使用了 screen 後就不同了,此時 bash 是 screen 的子程序,而 screen 是 init(PID為1)的子程序。那麼當 ssh 斷開連接配接時,HUP 信号自然不會影響到 screen 下面的子程序了。

繼續閱讀