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 下面的子程序了。