溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用Screen管理遠(yuǎn)程會(huì)話的方法

發(fā)布時(shí)間:2020-08-26 14:06:21 來(lái)源:億速云 閱讀:128 作者:小新 欄目:建站服務(wù)器

這篇文章將為大家詳細(xì)講解有關(guān)使用Screen管理遠(yuǎn)程會(huì)話的方法,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

在本地開發(fā)時(shí),經(jīng)常需要使用遠(yuǎn)程連接到Linux服務(wù)器,一開始我自己都是有幾個(gè)遠(yuǎn)程就開幾個(gè)SSH窗口,這種方法很原始很直接,但每次都受夠了密碼輸入,即使用了SSH免密碼登錄,也會(huì)覺得每次輸入SSH的命令一點(diǎn)都不快速,況且況且窗口開多了,也會(huì)很混亂,不易管理,這種情況,Linux上的工具也有很多,今天就學(xué)習(xí)一下screen工具。

在介紹screen工具時(shí),先討論一下,為什么連接服務(wù)器后,當(dāng)執(zhí)行長(zhǎng)時(shí)間的任務(wù)時(shí),我們關(guān)閉遠(yuǎn)程連接窗口,這個(gè)任務(wù)就被殺掉了呢?

元兇:SIGUP信號(hào)

在Linux/Unix中,有以下幾個(gè)概念:

  • 進(jìn)程組(process group):一個(gè)或多個(gè)進(jìn)程的集合,每個(gè)進(jìn)程組都有一個(gè)唯一的進(jìn)程組ID;

  • 會(huì)話期(session):一個(gè)或多個(gè)進(jìn)程組的集合,有唯一一個(gè)會(huì)話首進(jìn)程(session leader),會(huì)話期ID為首進(jìn)程ID;

  • 會(huì)話期可以有一個(gè)單獨(dú)的會(huì)話終端,與控制終端連接的會(huì)話期首進(jìn)程叫控制進(jìn)程(controlling process),當(dāng)前與終端交互的進(jìn)程稱為前臺(tái)進(jìn)程組,其余進(jìn)程組稱為后臺(tái)進(jìn)程組。

工具POSIX.1定義:

  • 掛斷信號(hào)(SIGHUP)默認(rèn)的動(dòng)作是終止程序;

  • 當(dāng)終端接口檢測(cè)到網(wǎng)絡(luò)連接斷開,將發(fā)送SIGHUP信號(hào)給控制進(jìn)程(會(huì)話期首進(jìn)程);

  • 如果會(huì)話期首進(jìn)程終止,則該信號(hào)發(fā)送到該會(huì)話期前臺(tái)進(jìn)程組;

  • 一個(gè)進(jìn)程退出導(dǎo)致一個(gè)孤兒進(jìn)程組產(chǎn)生時(shí),如果人一個(gè)孤兒進(jìn)程組進(jìn)程處于STOP狀態(tài),則發(fā)送SIGHUP和SIGCONT信號(hào)到該進(jìn)程組中所有進(jìn)程。

因此當(dāng)網(wǎng)絡(luò)斷開或窗口關(guān)閉時(shí),控制進(jìn)程收到SIGHUP信號(hào)退出,會(huì)導(dǎo)致該會(huì)話期內(nèi)其他進(jìn)程退出。

一個(gè)簡(jiǎn)單例子

打開兩個(gè)SSH終端窗口,在第一個(gè)中執(zhí)行ping命令:

使用Screen管理遠(yuǎn)程會(huì)話的方法

再另一個(gè)終端窗口中,找到ping的進(jìn)程ID為22132,其父進(jìn)程ID為21803,即登錄zsh:

使用Screen管理遠(yuǎn)程會(huì)話的方法

使用ps -xj可以看到,登錄zsh(PID 21803)和ping在同一會(huì)話期,zsh為會(huì)話期首進(jìn)程,所以進(jìn)程組PGID為21803,ping所在的進(jìn)程組PGID為22132,為前臺(tái)進(jìn)程組。

使用Screen管理遠(yuǎn)程會(huì)話的方法

這時(shí),我們關(guān)閉第一個(gè)SSH遠(yuǎn)程窗口,在另一個(gè)窗口中看到ping進(jìn)程被殺掉了:

使用Screen管理遠(yuǎn)程會(huì)話的方法

這就發(fā)現(xiàn),當(dāng)我們執(zhí)行一個(gè)耗時(shí)的任務(wù)時(shí),如果關(guān)閉了這個(gè)窗口,這個(gè)任務(wù)進(jìn)程也就被殺掉了,并不是我們所期望的那樣在后臺(tái)繼續(xù)執(zhí)行。

使用screen

現(xiàn)在,也不需要多說(shuō)screen到底是干什么的了,直接說(shuō)怎么使用吧。

1、直接執(zhí)行screen命令

使用Screen管理遠(yuǎn)程會(huì)話的方法

screen將創(chuàng)建一個(gè)執(zhí)行shell的全屏窗口,可以看到窗口的title已經(jīng)提示處于screen程序中,在這個(gè)窗口中你可以隨便執(zhí)行命令,如果要退出輸入exit命令。

2、如果你想新開一個(gè)窗口執(zhí)行另一個(gè)任務(wù),可以執(zhí)行:

// 方法1
按鍵盤Ctrl+a +c, 會(huì)心打開一個(gè)screen窗口

// 方法2
screen 需要執(zhí)行的任務(wù)的命令,比如:
screen ping www.baidu.com</pre>

3、多個(gè)screen窗口切換

方法1
鍵盤Ctrl+a +[0..9]

方法2
鍵盤Ctrl+a +n, 下一個(gè)screen窗口
鍵盤Ctrl+a +p, 上一個(gè)screen窗口</pre>

更多命令可以看下圖:

使用Screen管理遠(yuǎn)程會(huì)話的方法

使用Screen管理遠(yuǎn)程會(huì)話的方法

Screen是一個(gè)可以在多個(gè)進(jìn)程之間多路復(fù)用一個(gè)物理終端的窗口管理器,Screen中還有會(huì)話的概念,用戶可以在一個(gè)screen會(huì)話中創(chuàng)建多個(gè)screen窗口,而在每一個(gè)screen窗口中就像操作一個(gè)真實(shí)的SSH連接窗口那樣。

關(guān)于使用Screen管理遠(yuǎn)程會(huì)話的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI