摘要
作爲運維人員經常會遇到等到遠程主機的鏈接因爲網絡原因或者別的其他不可抗拒的原因斷掉,此時遠程爲執行完成的命令也會斷掉而導致很多任務需要重新執行。
這給大家介紹一個在這種情況下很好用的命令 screen,具體好用在那裏,下面具體介紹,包括從其安裝到配置到使用
#What to do 在正式介紹之前,先給大家介紹下 screen 都能做什麼事情
通過一個SSH session使用多個shell窗口 即使網絡斷開鏈接也能保持shell窗口處理激活狀態 可以在任何地方斷開或者重連同一個shell session 不用爲了跑一個耗時的任務而長時間保持幾個shell session處於激活狀態
安裝
Centos下命令安裝一般都採用兩種方式,YUM和RPM包的方式。這裏分別介紹
YUM安裝
yum install -y screen
RPM安裝
對於下載 RPM 包,建議去 http://rpm.pbone.net/ 下載
wget ftp://bo.mirror.garr.it/1/slc/centos/7.1.1503/os/x86_64/Packages/screen-4.1.0-0.19.20120314git3c2946.el7.x86_64.rpm
rpm -ivh screen-4.1.0-0.19.20120314git3c2946.el7.x86_64.rpm
驗證安裝
root@pts/1 $ which screen
/usr/bin/screen
root@pts/1 $ screen -v
Screen version 4.01.00devel (GNU) 2-May-06
使用
screen
在開始使用 screen 之前,執行下面的命令
root@pts/1 $ ps -ef|grep screen
root 6297 2410 0 14:02 pts/1 00:00:00 grep --color=auto screen
然後輸入如下命令,感覺打開了一個新的shell session
screen
screen -list
這個時候我們在執行上面的ps命令和screen -list查看結果
root@pts/2 $ ps -ef|grep screen
root 6335 2410 0 14:02 pts/1 00:00:00 screen
root 6476 6337 0 14:02 pts/2 00:00:00 grep --color=auto screen
root@pts/2 $ screen -list
There is a screen on:
6336.pts-1.192 (Attached)
1 Socket in /var/run/screen/S-root.
screen -list是查看開啓的screen列表
新增screen ctrl+a+c
爲了驗證新增screen和後面的功能,在上面的開啓的第一個screen session中執行top命令
從當前的screen session開啓一個新的screen session可以使用快捷鍵 ctrl+a+c
看到開啓了一個新的 screen session,一個沒有執行top的新session
screen切換 ctrl+a+n/p
ctrl+a+n 切換到下一個 ctrl+a+p 切換到上一個 需要說明的是在切換的時候N多session組成一個類似環狀,ctrl+a+n切換到最後一個之後在切換久切換到了第一個,
同理ctrl+a+p切換到第一個之後在切換久切換到了最後一個screen session
離開screen ctrl+a+d
注意括號中的狀態值,由Attached變成Detached
[detached from 6336.pts-1.192]
root@pts/1 $ screen -list
There is a screen on:
6336.pts-1.192 (Detached)
1 Socket in /var/run/screen/S-root.
再連接到screen ctrl+r[+name]
當系統只有一個screen處於 Detached狀態的話,直接輸入ctrl+r回車就可以進入screen
如果有多個
root@pts/1 $ screen -list
There are screens on:
9944.lc (Detached)
9766.pts-1.192 (Detached)
6336.pts-1.192 (Detached)
3 Sockets in /var/run/screen/S-root.
就需要執行ctrl+r+9766.pts-1.192
這裏其實輸入前面的數字或者後面的字符串都行,比如
ctrl+r+6336 ctrl+r+pts-1.192 pts-1.192 是由系統生成的,對應用戶而言沒有明確的意義。我們可以通過screen -S lc 命令去自定義這個值,結果如上面的9944.lc
鎖住screen ctrl+a+x
Screen used by root on 192. Password:
使用的時候輸入密碼即可
停止screen exit or ctrl+a+k
當你跑完腳本或者執行完任務的時候,一般建議停止screen,也就是真正的退出screen