Linux 多重視窗管理程序——screen

Linux Bash 文章 科技 三葉草之科技之旅 2017-06-14

昨天有朋友問,昨天發佈的“Linux學習:讓進程在後臺運行的幾種方法”這篇文章中為何沒有screen命令的介紹,

今天給大家補上這個,請多多指教。

screen是linux下的一種多重視窗管理程序。使用telnet或SSH遠程登錄linux時,如果連接非正常中斷,重新連接時,系統將開一個新的session,無法恢復原來的session。screen命令可以解決這個問題。

screen工具是一個終端多路轉接器,在本質上,這意味著你能夠使用一個單一的終端窗口運行多終端的應用。

如下為screen命令的幫助信息。

Linux 多重視窗管理程序——screen

screen 幫助信息

  • 用來建立一個處於斷開模式下的會話(並指定其會話名)。

    screen -dmS session name

  • 用來列出所有會話。

    screen -list

  • 用來重新連接指定會話。

    screen -r session name

  • 用快捷鍵來暫時斷開當前會話。

    CTRL+a+d

示例:

Linux 多重視窗管理程序——screen

當使用screen -r連接到screen後,我們就可以在裡面人已執行程序或命令了,而不用擔心SIGHUP信號對我們的進程造成影響了,不用在每個命令前加上"nohup"或者"setsid"了。下面來詳細的看下。

1)未使用screen時新進程的進程樹,如下圖所示

Linux 多重視窗管理程序——screen

從圖上可以看到bash屬於sshd的子進程,當ssh斷開之後,SIGHUP信號就會發送到它下面的每一個子進程中去。

2)使用了screen後進程的進程樹

Linux 多重視窗管理程序——screen

而使用了screen命令之後,bash是screen的子進程,那麼ssh斷開時,SIGHUP不用影響screen下面的子進程。

清除screen建立的session,使用kill命令即可

Linux 多重視窗管理程序——screen

如果由於某種原因,其中某一個對話Dead的話,可以使用screen -wipe來清除該會話。

見下圖的示例

Linux 多重視窗管理程序——screen

覺得不錯的話,希望各位多多點贊和評論哦!謝謝各位了。

相關推薦

推薦中...