用screen管理你的linux會話,永不退出

2021-08-24 19:41:26 字數 2701 閱讀 8914

下面的測試:

基於在第乙個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

看到這裡了,應該很明白了,不明白的就參考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...

如何管理你的上司

你可以選擇工作,可以選擇公司,卻不能選擇你的上司。也許你恰好幸運遇到乙個與你相性符合的上司,但世事無法完美,人也無完人。更多的時候,我們總會覺得自己的上級有這樣那樣的缺點,覺得他們的行事風格自己無法接受,這時我們該怎麼辦?你的上司是什麼樣的?他是否對你的職業發展產生印象?當你遇到乙個相性不合的上司時...