screen詳解


screen詳解

處理如何登陸處於attach狀態的screen
當你掛起screen,下次想連上screen的時候,有時候會出現screen session的狀態為Attached而怎么連也連不上的情況。下面給出解決方法。
列出狀態為Attached的session id。

  1. screen -ls
  2. screen -D -r <session-id>

Cannot open your terminal
禁止將screen加入到visudo中;
默認在lzadmin賬戶下執行screen命令會報錯:
Cannot open your terminal '/dev/pts/0' - please check.
請先執行下命令:
script /dev/null
將screen終端生成放入垃圾桶,再執行"screen"命令即可;

然后在screen終端下,允許其他命令(仍為非root權限);
龍之力量研發GM 114.112.69.119 tomcat管理,使用screen 打開終端:
script /dev/null
screen -r tomcat
產生新的screen,
sudo /usr/local/tomcat/bin/catalina.sh run
GM管理工具的url: http://114.112.69.119:6070/RPGGM/login.html

screen 命令詳解
功能說明:
使用telnet或SSH遠程登錄linux時,如果連接非正常中斷,重新連接時,系統將開一個新的session,無法恢復原來的 session.screen命令可以解決這個問題。Screen工具是一個終端多路轉接器,在本質上,這意味着你能夠使用一個單一的終端窗口運行多終端的應用。
語  法:
screen [-AmRvx -ls -wipe][-d <作業名稱>][-h <行數>][-r <作業名稱>][-s ][-S <作業名稱>]
補充說明:
screen為多重視窗管理程序。此處所謂的視窗,是指一個全屏幕的文字模式畫面。通常只有在使用telnet登入主機或是使用老式的終端機時,才有可能用到screen程序。
參  數:
-A  將所有的視窗都調整為目前終端機的大小。
-d <作業名稱>  將指定的screen作業離線。
-h <行數>  指定視窗的緩沖區行數。
-m  即使目前已在作業中的screen作業,仍強制建立新的screen作業。
-r <作業名稱>  恢復離線的screen作業。
-R  先試圖恢復離線的作業。若找不到離線的作業,即建立新的screen作業。
-s  指定建立新視窗時,所要執行的shell。
-S <作業名稱>  指定screen作業的名稱。
-v  顯示版本信息。
-x  恢復之前離線的screen作業。
-ls 或--list  顯示目前所有的screen作業。
-wipe  檢查目前所有的screen作業,並刪除已經無法使用的screen作業。
常用screen參數:
screen -S yourname -> 新建一個叫yourname的session
screen -ls -> 列出當前所有的session
screen -r yourname -> 回到yourname這個session
screen -d yourname -> 遠程detach某個session(將指定的screen作業離線)
screen -d -r yourname -> 結束當前session並回到yourname這個session
在每個screen session 下,所有命令都以 ctrl+a(C-a) 開始。
C-a ? -> Help,顯示簡單說明
C-a c -> Create,開啟新的 window
C-a n -> Next,切換到下個 window
C-a p -> Previous,前一個 window
C-a 0..9 -> 切換到第 0..9 個window
Ctrl+a [Space] -> 由視窗0循序換到視窗9
C-a C-a -> 在兩個最近使用的 window 間切換
C-a x -> 鎖住當前的 window,需用用戶密碼解鎖
C-a d -> detach ,暫時離開當前session,將目前的 screen session (可能含有多個 windows) 丟到后台執行,並會回到還沒進 screen 時的狀態,此時在 screen session 里 每個 window 內運行的 process (無論是前台/后台)都在繼續執行,即使 logout 也不影響。
C-a z -> 把當前session放到后台執行,用 shell 的 fg 命令則可回去。
C-a w -> Windows,列出已開啟的 windows 有那些
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 選定的內容貼上
--End--
大家在起后台服務,或者長時間執行某個腳本的時候。
是不是感覺,交互性很差,
有時,想把結果直接在終端上輸出,又怕不小心關閉了終端導致進程退出? (有些sshd服務還會設置連接超時,自動退出終端)
現在用 screen 這個指令可以很好的解決跑后台服務的尷尬。
命令其實超簡單的:
直接在終端上輸入 screen , 這個時候,服務器端會啟一個新的終端,但這個終端,與之前的普通終端不一樣,它不隸屬於 sshd 進程組,這樣,當本地終端關閉后,服務器終端不會被 kill。
當然,優點還不止這么些,在服務器終端里執行任務時,你甚至可以隨時地切換到本地終端做些其他事情,然后,要回去時,再恢復到剛才已經打開的服務器終端里,如果剛才的任務沒有結束,還可以繼續執行任務。
操作步驟:
首先,進入 screen -S sessionname終端。(sessionname是為了分辨你的session)
然后按 ctrl + a ,再按 d 鍵暫時退出終端。
當要返回時, 先查看剛才的終端進程ID, screen -list
或直接
screen -r xx (剛才的sessionname)就可以了
當然,當你開了很多個session后,打算關閉幾個session,可以進入到session后,exit 一下就可以了.
總的來說, screen是可以完全替代 nohup 的,並且本身提供了較復雜的功能,但是我認為,剛才那些簡單的功能足以應付日常運作。
如果對該指令感興趣的朋友,推薦一篇文章:
http://www.ibm.com/developerworks/cn/linux/l-cn-screen/
我能夠使用如下的方法開始一個叫做“radiostation”的screen對話:
  tmancill@ghostrider:~$ screen -S radiostation
  (此時出現一個空白的screen)
  tmancill@ghostrider:~$ mp3blaster
  (載入我的播放列表,然后按下play開始發射)
  (按下“CTRL-a”,然后按下“d”離開)
默認會啟動一個screen進程,讀取/etc/scrennrc配置文件,~/.screenrc配置文件(如果有的話)\r
3.screen后面可以帶的參數:\r
-c file: override默認的配置文件$HOME/.screenrc
-d [pid.tty.host]:斷開screen進程(使用該命令時,screen的狀態一定要是Attached,也就是說有用戶連在screen里)。一般進程的名字是以pid.tty.host這種形式表示(用screen -list命令可以看出狀態)。\r
-D [pid.tty.host]:與-d命令實現一樣的功能,區別就是如果執行成功,會踢掉原來在screen里的用戶並讓他logout。\r
-r [pid.]tty.host:連上一個斷開的screen進程,如果有多個斷開的進程,需要指定[pid.]tty.host,常用命令\r
-d -r:連接一個screen進程,如果該進程是attached,就先踢掉遠端用戶再連接。\r
-D -r:連接一個screen進程,如果該進程是attached,就先踢掉遠端用戶並讓他logout再連接\r
-ls或者-list:顯示存在的screen進程,常用命令\r
-m:如果在一個Screen進程里,用快捷鍵crtl+a c或者直接打screen可以創建一個新窗口,screen -m可以新建一個screen進程。\r
-dm:新建一個screen,並默認是detached模式,也就是建好之后不會連上去。\r
-p number or name:預先選擇一個窗口。\r
例如:如果現在有一個Screen進程,並且是dettached
4.在screen中的操作:\r
(C-a c命令指的是按下Crtl+a,然后松開,在按下c)\r
C-a “:顯示Screen里的所有窗口,並可以進行選擇。最常用命令
C-a c:創建新窗口,常用命令
C-a num:切換至num號窗口。窗口名一般是0-9(我這個版本最多支持創建40個窗口,C-a “命令就可以看到窗口號,在最左邊)
C-a A:為當前窗口設定一個標題,常用命令
C-a d:斷開一個screen的進程,常用命令
C-a D D:斷開一個screen的進程並且logout
C-a K:刪除當前的窗口,常用命令
C-a C-x:鎖住終端
C-a C-z:掛起終端,也就是可以用jobs,fg之類的命令管理\r
C-a Z:重置終端至剛啟動時的狀態\r
Created By: sb123
Form Page: linux screen 的使用 教程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM