下面的測試:
基於在第乙個ssh視窗上執行了top程式,程式掛在那裡,間隔重新整理
然後在第二個ssh視窗上執行了以下的操作,檢視一下程序本身的父子邏輯。
[@nova.imdba.cn ~]# ps -ef |grep top |grep -v grep
root 17306 17236 0 19:28 pts/2 00:00:00 top
[@nova.imdba.cn ~]#
[@nova.imdba.cn ~]# pstree -h 17306 |grep top
| `-sshd—bash—top
[@nova.imdba.cn ~]#
[@nova.imdba.cn ~]# ps -xj |grep 17236
17234 17236 17236 17236 pts/2 17306 ss 0 0:00 -bash
17236 17306 17306 17236 pts/2 17306 s+ 0 0:00 top
16885 18084 18083 16885 pts/1 18083 r+ 0 0:00 grep 17236
為什麼要這麼看呢,又有什麼用呢?
你考慮過,當你關閉了第乙個ssh後,top程序是不是就消失了?
因為通知了結束通話訊號,然而恰恰是結束通話訊號(sighup)預設的動作是終止程式。
那有個問題,如果我重要的操作,恢復資料庫的時候,突然putty,crt,等一堆終端都斷開了,你完蛋了,因為資料會終止操作,因為你沒放到後台,只是乙個session而已,。。。
這個時候用一下這個命令吧?screen
簡單來說,screen是乙個可以在多個程序之間多路復用乙個物理終端的視窗管理器。screen中有會話的概念,使用者可以在乙個screen會話中建立多個screen視窗,在每乙個screen視窗中就像操作乙個真實的telnet/ssh連線視窗那樣。在screen中建立乙個新的視窗有這樣幾種方式:
在第乙個ssh視窗輸入如下操作:
[@nova.imdba.cn ~]# screen top
在第二個ssh視窗輸入如下操作:
[@nova.imdba.cn ~]# ps -ef |grep top
root 18593 18544 0 19:59 pts/1 00:00:00 screen top
root 18594 18593 0 19:59 ? 00:00:00 screen top
root 18595 18594 0 19:59 pts/3 00:00:00 top
root 18598 17236 0 19:59 pts/2 00:00:00 grep top
[@nova.imdba.cn ~]#
[@nova.imdba.cn ~]# ps -ef |grep top |grep -v grep
root 18593 18544 0 19:59 pts/1 00:00:00 screen top
root 18594 18593 0 19:59 ? 00:00:00 screen top
root 18595 18594 0 19:59 pts/3 00:00:00 top
[@nova.imdba.cn ~]#
[@nova.imdba.cn ~]# pstree -h 18593 |grep top
| `-sshd—bash—screen—screen—top
[@nova.imdba.cn ~]#
看看是不是top基於了screen而執行,這樣如果沒有輸入exit,沒有給screen終止訊號,它是不會推出的,所有的操作都在screen裡面執行,這樣的話,即使你關了第乙個ssh視窗也無所謂啦?
但是你關了後怎麼恢復呢?
下面的操作,是我把第乙個視窗關閉後,再次檢查的邏輯關係
[@nova.imdba.cn ~]# pstree -h 18593 |grep top
|-screen—top
[@nova.imdba.cn ~]#
[@nova.imdba.cn ~]# screen -ls
there are screens on:
19091.pts-2.54 (attached)
18594.pts-1.54 (detached)
2 sockets in /tmp/screens/s-root.
[@nova.imdba.cn ~]# screen -r 18594
這個時候一看,哈哈,top又恢復了,不是很爽嗎?
但是screen功能很強大的,需要怎麼來維護呢?
[@nova.imdba.cn ~]# kill -9 19091.pts-2.54 [殺掉會話]
[@nova.imdba.cn ~]#screen -ls [列表screen]
[@nova.imdba.cn ~]#screen -wipe [清空screen中的job]
-d –m 選項也很有幫助。它會啟動乙個開始執行的時候就處於斷開模式的會話。你可以在隨後需要的時候連線上該會話。有時候這是乙個很有用的功能,比如我們可以使用一下top命令。
該選項乙個更常用的搭配是:-dms sessionname
啟動乙個初始狀態斷開的screen會話:
[@nova.imdba.cn ~]# screen -dms mytop top
拯救會話:
[@nova.imdba.cn ~]# screen -r mytop
有時在恢復screen時會出現there is no screen to be resumed matching ****,遇到這種情況咋辦呢?輸入命令
screen -d ****
看到這裡了,應該很明白了,不明白的就參考man screen吧。
**:
用screen管理你的linux會話,永不退出
下面的測試 基於在第乙個ssh視窗上執行了top程式,程式掛在那裡,間隔重新整理 然後在第二個ssh視窗上執行了以下的操作,檢視一下程序本身的父子邏輯。nova.imdba.cn ps ef grep top grep v grep root 17306 17236 0 19 28 pts 2 00...
用Leangoo管理你的專案
leangoo 是國內我用過最好用 最優秀的專案協作工具及專案管理軟體。它由中國最權威的scrum中文網 研發,融入了先進的敏捷管理思想,多位業界知名敏捷管理顧問提供支援,並由專業的敏捷開發團隊精心打造,完美支援scrum敏捷開發和看板方法。leangoo提供了全面的功能,介面十分簡潔,十分輕量,5...
如何管理你的上司
你可以選擇工作,可以選擇公司,卻不能選擇你的上司。也許你恰好幸運遇到乙個與你相性符合的上司,但世事無法完美,人也無完人。更多的時候,我們總會覺得自己的上級有這樣那樣的缺點,覺得他們的行事風格自己無法接受,這時我們該怎麼辦?你的上司是什麼樣的?他是否對你的職業發展產生印象?當你遇到乙個相性不合的上司時...