【工具】screen 的使用
當我們使用securecrt,putty, 等連線遠端伺服器時,如果正在執行一個程式,比如shell 指令碼,退出當前的視窗會導致程式終止!其原理如下:
根據POSIX.1定義:
1 結束通話訊號(SIGHUP)預設的動作是終止程式。
2 當終端介面檢測到網路連線斷開,將結束通話訊號傳送給控制程式(會話期首程式)。
3 如果會話期首程式終止,則該訊號傳送到該會話期前臺程式組。
一個程式退出導致一個孤兒程式組中產生時,如果任意一個孤兒程式組程式處於STOP狀態,傳送SIGHUP和SIGCONT訊號到該程式組中所有程式。
使用一個例子:securecrt 透過ssh 連線遠端伺服器
在會話1 執行top命令
在會話2 進行檢視top程式ID 為20543 其父程式為12158,即登入shell。
[root@rac3 sh]# ps -ef | grep top
root 20543 12158 0 19:23 pts/1 00:00:00 top
root 20578 12189 0 19:25 pts/2 00:00:00 grep top
使用pstree 命令檢視上述關係
[root@rac3 sh]# pstree -H 20543 | grep top
|-sshd-+-sshd---bash---top
[root@rac3 sh]# ps -xj | grep 20543
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
12156 12158 12158 12158 pts/1 20543 Ss 0 0:00 -bash
12158 20543 20543 12158 pts/1 20543 S+ 0 0:00 top
12189 20569 20568 12189 pts/2 20568 R+ 0 0:00 grep 20543
[root@rac3 sh]#
由ps -xj 命令檢視top 命令和登入的shell -bash同屬於一個會話期,shell為會話期首程式,做在程式組為12158 ,top 命令所在的PGID 為20543,為前臺程式組!
關閉第一個會話,top命令被kill 掉!
[root@rac3 sh]# ps -ef | grep top
root 20845 12189 0 19:35 pts/2 00:00:00 grep top
[root@rac3 sh]#
如何避免SIGHUP訊號中斷導致當前視窗執行的命令被迫中斷,大家會想到nohup,使用如下方法:
nohup command &
使得command 命令在後臺執行。但是對於nohup的用法未免有些簡單 ,我們可以使用一個更加強大的命令--screen。
Screen是一個可以在多個程式之間多路複用一個物理終端的視窗管理器。Screen中有會話的概念,使用者可以在一個screen會話中建立多個screen視窗,在每一個screen視窗中就像操作一個真實的telnet/SSH連線視窗那樣。在screen中建立一個新的視窗有這樣幾種方式:
檢視系統是否安裝screen
[root@rac3 sh]# rpm -qa|grep screen
screen-4.0.3-1.el5
gnome-screensaver-2.16.1-8.el5
如果沒有安裝則可以使用yum install screen 來安裝screen
Screen命令語法:
screen [-AmRvx -ls -wipe][-d ][-h ][-r ][-s ][-S ]
Screen命令引數:
-A -[r|R] 將所有的視窗都調整為目前終端機的大小。
-c filename 用指定的filename檔案替代screen的配置檔案’.screenrc’.
-d [pid.tty.host] 斷開screen程式(使用該命令時,screen的狀態一定要是Attached,也就是說有使用者連在screen裡)。一般程式的名字是以pid.tty.host這種形式表示(用screen -list命令可以看出狀態)。
-D [pid.tty.host] 與-d命令實現一樣的功能,區別就是如果執行成功,會踢掉原來在screen裡的使用者並讓他logout。
-h 指定視窗的緩衝區行數。
-ls或–list 顯示目前所有的screen作業。
-m 即使目前已在作業中的screen作業,仍強制建立新的screen作業。
-p number or name 預先選擇一個視窗。
-r [pid.tty.host] 恢復離線的screen程式,如果有多個斷開的程式,需要指定[pid.tty.host]
-R 先試圖恢復離線的作業。若找不到離線的作業,即建立新的screen作業。
-s shell 指定建立新視窗時,所要執行的shell。
-S 指定screen作業的名稱。(用來替代[pid.tty.host]的命名方式,可以簡化操作).
-v 顯示版本資訊。
-wipe 檢查目前所有的screen作業,並刪除已經無法使用的screen作業。
-x 恢復之前離線的screen作業。
進入screen的具體的方法:
1 直接輸入 screen 命令,會進入由screen建立的全新的視窗。
[root@rac3 ~]# screen
Screen將建立一個執行shell的全屏視窗。你可以執行任意shell程式,就像在ssh視窗中那樣。在該視窗中鍵入exit退出該視窗,如果這是該screen會話的唯一視窗,該screen會話退出,否則screen自動切換到前一個視窗。
2 screen 後面直接跟 要執行的命令:
[root@rac3 ~]# screen vi hivedb.sh
之後使用ctrl+a d 命令中斷當前的screen會話,但是當你再次進入的時候,依然是退出時候的狀態!
參考文件:
http://www.ibm.com/developerworks/cn/linux/l-cn-screen/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-716291/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Screen/Tmux/Byobu分屏工具的使用 ( by quqi99 )UX
- screen使用教程
- SCREEN安裝使用說明
- 使用screen 管理你的遠端會話會話
- Mac螢幕錄製工具Tipard Screen CaptureMacAPT
- Easy Screen Recorder Mac(螢幕錄製工具)Mac
- 使用screen管理遠端會話會話
- Mac螢幕錄製工具——AV Recorder Screen CaptureMacAPT
- FonePaw Screen Recorder 專業螢幕錄影工具
- Screen Wonders for Mac(最佳3D屏保桌布工具)Mac3D
- 使用screen後臺執行任務
- 簡單好用的螢幕截圖工具:Screen Timelapse for MacMac
- screen命令
- linux 技巧:使用 screen 管理你的遠端會話Linux會話
- [linux] 使用Screen後臺執行命令Linux
- rsync 通過服務的方式同步 linux系統日誌 screen工具Linux
- Android App 中正確地使用 Splash Screen(譯)AndroidAPP
- screen.deviceYDPIdev
- screen.deviceXDPIdev
- JavaScript screen 物件JavaScript物件
- 如果 SSH 被中斷,Linux screen 工具如何拯救你的任務以及理智Linux
- 如何使用screen解決ssh斷連訓練停止的問題
- rsync通過服務同步、linux系統日誌、screen工具Linux
- Linux screen命令Linux
- screen.availWidthAI
- screen.availHeightAI
- 記錄screen命令
- screen 命令及其示例
- Anti-Screen Capture(Prevent Screen Captures)截圖與反截圖APT
- IOS使用Launch Screen.storyboard製作廣告啟動介面iOS
- SAP GUI裡Screen Painter的工作原理GUIAI
- screen.width和screen.height屬性作用介紹
- 使用screen讓關閉ssh連線時不關閉程式
- js_獲取css的@media screen的值JSCSS
- VideoSolo Screen Recorder for mac(mac螢幕錄製工具) v2.0.28啟用版IDEMac
- doDBA工具的使用
- 其他工具的使用
- MVMC工具的使用