背景介紹
在服務器上搭建一些服務的時候,經常要用到screen命令。這是因為一般情況下我們只會開一個連接服務器的控制台,但是某些服務(比如minecraft服務器)開啟的時候需要占據一整個控制台,如果關閉了就會導致進程終止。這就成了類似單進程的效果。而screen命令就是為了能夠在服務器上開啟多個控制面板(screen),用以容納不同的任務。
正文
1、安裝
$sudo apt-get intstall screen
2、screen界面
screen界面就是當我們進入screen空間下的,占用了一個進程pid的一個界面。這個界面有他自己的名字,有他自己內部交互的快捷鍵,能夠擁有很多不同的子終端的界面。也可以理解成獨立於默認窗口之外的窗口。注意,是每一個screen界面都能擁有很多的子窗口,而我們的電腦能同時擁有很多不同的screen界面。
3、面向screen級別的命令
(1)新建一個screen :
可以直接輸入screen 來打開一個帶有默認名字的screen界面,也可以加上 -S 參數來親自制定一個好聽的名字。然后系統就會切進當前的screen了。
(2)查看當期存在的screen:
輸入screen -ls 可以查看當前存在的screen 界面,比如:
他會顯示當前的每一個screen界面,對於每一個界面,他的顯示格式是:pid.name (time) (status) ,前面的不解釋,最后的那個狀態有(Attached) 和(Detached) ,表示是否已經連接進來(?其實不太懂這個意思,沒有連接進來那就連接進來唄~有啥必要非得分開看呢。。。不過有一個明顯的區別就是,當你斷開主界面然后重新登錄的時候,所有的screen都是顯示Detached的。)
(3)關閉和選擇screen:
想要關閉一個screen 就要先選擇並且進入這個screen。
首先用screen -ls查看你想要選的screen:
如果他的狀態是Detached的,我們需要輸入screen -r <screen的pid>
,來進入這個screen ,或者screen -rd <screen的名稱>
;
如果他的狀態是Attached的,我們就要輸入 screen -d <screen的pid>
,來使他”Dettached”,然后再輸入screen -r <screen的pid>
,來進入這個screen。(必須先detached,否則是進不去的)
進入了你想要關閉的screen之后,就可以直接輸入exit,或者Ctrl+d,來終止這個界面了。成功終止后,如果有其他處於Attached狀態的screen界面,他就會跳到那個界面中,如果沒有,他就會跳到默認界面上。
(4)清除損壞的screen :
如果由於某些情況導致一個screen的狀態處於Dead(很可能是程序出錯或者強行刪除進程鎖之類的。。),我們無法attached進去,那么我們只需要輸入screen --wipe
,就可以刪除這些進程了。
(5)刪除某一個screen:
$ screen -X -S 28508 quit
MAC OS X 使用screen命令
1、創建會話
screen -S SessionName 創建一個screen會話
2、會話detach以及會話恢復
Ctrl-a d :將當前會話detach;
screen -ls :查看當前有哪些會話以及它們各自的狀態;
screen -r yourname -> 回到yourname這個session
3、screen -x 窗口名 :更換窗口
4、Ctrl-a k :kill會話
在已有screen會話中創建新的窗口:
(1)在當前screen窗口中鍵入C-a c;
(2)C-a n,即Ctrl鍵+a鍵,之后再按下n鍵, 切換到下一個窗口;
(3)殺死會話
(4)上下分屏:ctrl + a 再按shift + s
(5) 切換屏幕:ctrl + a 再按tab鍵