linux ssh 遠程會話保存,遠程SSH會話和流程在斷開后運行的5種方法

SSH或安全Shell簡單來說就是一個人可以遠程訪問其他用戶的其他系統,但僅在命令行即非GUI模式的方法。 在更多的技術術語中,當我們ssh到其他用戶在某些其他系統上并在該機器上運行命令時,它實際上創建一個偽終端并將其附加到登錄用戶的登錄shell。

4661b1b150850f422cb79c213667f74d.png

斷開連接后SSH會話運行的5種方法

當我們退出會話或會話超時閑置一段時間后,將SIGHUP信號發送到偽終端以及所有已在該終端上運行的作業,甚至有自己的父作業的作業在偽終端上發起的也被發送SIGHUP信號并被強制終止。

只有配置為忽略此信號的作業才能在會話終止后生存。 在Linux系統上,我們可以有許多方法使這些作業在遠程服務器或任何計算機上運行,??即使在用戶注銷和會話終止之后。

了解Linux上的進程

正常過程

正常過程是具有會話的壽命的過程。 它們在會話期間作為前臺進程啟動,并在特定時間跨度或在會話注銷時結束。 這些進程的所有者是系統的任何有效用戶,包括root用戶。

孤立進程

孤立進程是最初有父進程創建進程的進程,但在一段時間后,父進程無意中死亡或崩潰,使init成為該進程的父進程。 這樣的進程使init作為其直接父進程,等待這些進程直到它們死亡或結束。

守護進程

這些是一些有意孤立的進程,這些有意在系統上運行的進程稱為守護程序或有意孤立的進程。 它們通常是長時間運行的進程,它們一旦啟動,然后從任何控制終端分離,以便它們可以在后臺運行,直到它們沒有完成,或者最終引發錯誤。 這種過程的父母故意使孩子在后臺執行。

斷開連接后保持SSH會話運行的技術

在斷開連接后,可以有多種方法使ssh會話運行,如下所述:

1.使用屏幕命令保持SSH會話運行

屏幕是Linux的一個文本窗口管理器,它允許用戶管理在同一時間多個終端會話,會話之間切換,會話日志記錄在屏幕上運行會議,甚至可以恢復屆,我們無需擔心會話所需的任何時間被記錄輸出或端子閉合。

屏幕會話可以開始,然后從控制終端分離,使它們在后臺運行,然后在任何時間甚至在任何地方恢復。 只需要在屏幕上啟動會話,并在需要時將其從偽終端(或控制終端)分離并注銷。 當你感覺到,你可以重新登錄并恢復會話。

啟動屏幕會話

鍵入“屏幕”命令后,你將在一個新的屏幕會話,本次會議中,您可以創建新的窗口,遍歷窗口之間,鎖定屏幕,并做更多的東西,你可以正常的終端上做的。$ screen

e37f5be541edcd3adcd23474c4442a17.png

在Linux中啟動屏幕會話

一旦屏幕會話啟動,您可以運行任何命令,并通過分離會話來保持會話運行。

5acb59c1a8ba183ccabeb1146e34f200.png

在屏幕會話中運行命令

分離屏幕

只是當你想退出遠程會話,但你想保持在該機器上創建的會話活著,那么你只需要做的是將屏幕從終端分離,以便它沒有控制終端。 這樣做后,您可以安全地注銷。

從遠程終端分離屏幕,只要按下“Ctrl+a”后面緊跟著“d”您將回到碼頭看到,屏幕上是分離的消息。 現在您可以安全地注銷,您的會話將保持活動狀態。

bf10d94f90c0c4fc588a58b5b966b9d7.png

分離Linux屏幕會話

恢復分離屏幕會話

如果你想恢復您注銷前留下了分離屏幕會話,只需再次重新登錄到遠程終端輸入“screen -r”如果只有一個屏幕打開的情況下,如果多屏會被打開運行“screen -r ”$ screen -r

$ screen -r

aef15928d764017b54701966db0a81ce.png

恢復分離屏幕會話

要了解更多關于屏幕的命令,以及如何使用它只是按照鏈接: 使用屏幕命令管理Linux終端會話

2.使用Tmux(終端復用器)保持SSH會話運行

TMUX是創建的,是用于屏幕更換另一個軟件。 它擁有的大部分屏幕的能力,很少有額外的功能,這使得它比屏幕上更強大。

除了屏幕提供的所有選項之外,它允許在多個窗口之間水平或垂直分割窗格,調整窗口窗格大小,會話活動監視,使用命令行模式的腳本等。由于tmux的這些特性,它已被近乎所有的Unix發行版,甚至已經包含在OpenBSD的基本系統中。

啟動Tmux會話

在遠程主機并輸入TMUX做SSH之后,你將進入一個新的會話使用一個新窗口打開在你的面前,其中你可以做任何你一個正常的終端上完成。$ tmux

ca783497a0a70aad8746f2df64b97714.png

啟動tmux終端會話

在終端上執行操作后,您可以從控制終端分離該會話,使其進入后臺,您可以安全地注銷。

404ece6bdfda42f11d8c9e22cea26c42.png

在Tmux會話中執行Linux命令

從終端分離Tmux會話

要么你可以運行“tmux detach”運行TMUX會話,也可以使用快捷鍵(Ctrl+b then d) 之后,您當前的會話將分離,您將回到您的終端,從那里你可以安全地注銷。$ tmux detach

0aa123ebab93a66ef95e0a00a02b1c9d.png

在Linux中分離Tmux會話

恢復關閉的Tmux會話

要重新打開會話,你超脫,保持不變,當你退出系統,只需重新登錄到遠程計算機,然后鍵入“TMUX重視”重新連接到關閉會話,它將會依然存在并運行。$ tmux attach

5ba1f7ebc1475434c0170b610b99781d.png

恢復Tmux關閉會話

要了解更多關于TMUX以及如何使用它只是按照鏈接: 使用TMUX終端復用器管理多個Linux的終端 。

3.使用nohup命令保持運行SSH會話

如果您不熟悉的屏幕或TMUX,你可以使用的nohup和發送你的長期運行的命令的背景,這樣就可以繼續,而該命令將繼續在后臺執行。 之后,您可以安全地注銷。

隨著nohup命令我們告訴這個過程要忽略的是通過SSH會話發送終端上,從而使該命令的SIGHUP信號堅持,即使會話注銷后。 在會話注銷時,命令從控制終端中被取消,并作為守護進程在后臺繼續運行。

在后臺使用nohup執行命令

在這里,是一個簡單的場景,其中,我們已經運行find命令來搜索文件使用的nohup上的SSH會話背景,在此之后,任務被送到背景提示返回,立即給PID和過程作業ID ([JOBID] PID) 。# nohup find / -type f $gt; files_in_system.out 2>1 &

d3dc3382c0be848fda57d4052fbd1aca.png

在后臺運行Linux命令

恢復會話以查看作業是否仍在運行

當您再次重新登錄,您可以檢查命令的狀態,通過將其帶回前臺'fg %JOBID'來監測其進展情況等。 下面,輸出顯示作業已完成,因為它在重新登錄時不顯示,并已給出顯示的輸出。# fg %JOBID

d3dc3382c0be848fda57d4052fbd1aca.png

在后臺運行Linux命令

4.使用disown命令保持SSH會話運行

即使會話注銷后讓你的命令,或者在后臺單任務運行和另一種優雅的方式仍然存活或斷開是使用不認 。

不認 ,從系統中刪除的處理作業列表中的作業,所以這個過程是從會話斷開時被殺害,當您注銷它不會被shell收到SIGHUP屏蔽。

這種方法的缺點是,它應該只對那些不需要從標準輸入既不需要任何輸入寫入到標準輸出的作業中使用的,除非你專門重定向作業的輸入和輸出,因為當作業將嘗試使用標準輸入交互或標準輸出 ,這將暫停。

使用后臺禁用執行命令

下面,我們發送ping命令來背景,使UT不斷運行,并會從任務列表中刪除。 可以看出,這項工作首先暫停后,它仍然在工作清單進程ID:15368。$ ping howtoing.com > pingout &

$ jobs -l

$ diswon -h %1

$ ps -ef | grep ping

43f1ddc8ba76220ca0881ce5dfb0ee68.png

使用Disown運行Linux命令

之后,拒絕信號傳遞到作業,并從作業列表中刪除,雖然仍然在后臺運行。 當您重新登錄到遠程服務器時,作業仍將運行,如下所示。$ ps -ef | grep ping

584b06952e50d0597120b76b0897e63f.png

驗證作業狀態

5.使用setsid命令使SSH會話運行

另一個實用程序來實現所要求的行為setsid。NOHUP具有意義上的缺點,即該過程的進程組保持相同,以便與nohup的運行過程是易受發送到的整個過程組的任何信號(例如Ctrl + C ) 。

在另一方面setsid分配正在執行一個新的進程組的進程,因此,創建的過程完全是在一個新分配的進程組,可以不用擔心,甚至會注銷后被殺安全地執行。

使用setsid執行任何命令

這里,它示出了該過程'sleep 10m'已經從控制終端拆下,由于時間已經創建。$ setsid sleep 10m

$ ps -ef | grep sleep

7ce851e6604076aa2dd64c9aef2d7f01.png

使用Setsid運行Linux命令

現在,當您重新登錄會話時,您仍然會發現此進程正在運行。$ ps -ef | grep [s]leep

434db14acb6f7b1a101d31b0add35c39.png

Linux進程運行背景

結論

你可以想到什么方法來保持你的進程運行,即使你從SSH會話注銷? 如果有任何其他和有效的方式,你可以想到,請在你的評論中提及。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531621.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531621.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531621.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java模擬一個簡單的QQ

v 項目源碼https://github.com/hjzgg/java_QQ v 標題效果package testFour;import java.awt.Color; import java.awt.Dimension; import java.awt.FontMetrics; import java.awt.Graphics; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.I…

修改Linux啟動后的默認顏色,更改linux目錄的默認顏色(我選擇了Yellow)

在控制臺下,用ls,就會發現,shell將不同類型的文件項目顯示為不同的顏色。者可以提高效率,不用ls -l便能大概的把各個文件的類型情況了解一下。你有沒有想過更改這個著色配置呢?其 實,在/etc下有一個DIR_COL…

AC_Dream 1216 G - Beautiful People

題意&#xff1a;有n個人每人有一個力氣值Si,美麗值Bi&#xff0c;滿足Bi>Bj&&Si>Sj 或者 Bi<Bj&&Si<Sj 的人可以一起參見晚會&#xff0c;問最多有多少人可以一起參見晚會。思路&#xff1a; 我們根據S從小到大將所有人排序&#xff0c;然后看B最…

云主機用linux還是winows,云服務器一般使用什么系統?Linux還是Windows?

云服務器一般使用什么系統?最常用的就是Linux以及Windows系統&#xff0c;兩大系統各有不同優勢&#xff0c;大家選擇上也是存在差異的&#xff0c;接下來跟著小編來了解一下吧。Windows系統&#xff1a;一般情況來說&#xff0c;Windows系統常用的是Server 2003和Server 2008…

c語言程序中return的作用,單片機C語言程序中return dat 什么意思

/* 打開 ISP,IAP 功能 */void ISP_IAP_enable(void){EA 0; /* 關中斷 */ISP_CONTR ISP_CONTR & 0x18; /* 0001,1000 */ISP_CONTR ISP_CONTR | WaitTime; /* 寫入硬件延時 */ISP_CONTR ISP_CONTR | 0x80; /* ISPEN1 */}/* 關閉 ISP,IAP 功能 *…

java中DatagramSocket連續發送多個數據報包時產生丟包現象解決方案

1 try {2 //向指定的ip和端口發送數據~&#xff01;3 //先說明一下數據是誰發送過來的&#xff01;4 byte[] ip InetAddress.getLocalHost().getHostAddress().getBytes();5 …

二級c語言程序設計bug,《C語言及程序設計》實踐項目——發現Bug

返回&#xff1a;賀老師課程教學鏈接【項目1-sin泰勒展式中的錯誤】下面是sin函數的泰勒展式&#xff1a;(注&#xff1a;x取弧度值&#xff0c;而非角度值)編寫了double mysin(double x)用于求sin值&#xff0c;卻“死”在了123上。劇透一下&#xff0c;循環沒有問題(當然問題…

AC_Dream 1224 Robbers(貪心)

題意&#xff1a;n個搶劫犯分別搶到的金錢是k1, k2, k3,...&#xff0c;一共得到的金錢是m&#xff0c; 但是在分錢的時候是按照x1/y, x2/y, x3/y,....的比例進行分配的&#xff01;這樣的話 一些搶劫犯就會覺得不公平&#xff0c;不公平度為|xi/y - ki/m|(浮點運算)&#xff0…

C語言編程出圖形,C語言畫出各種圖形

矩形&#xff1a;(里面是空的)******** ** ** ********Program ended with exit code: 0for (int i 0; i < 5; i ) {for (int j 0; j < 7; j ) {//用條件判斷打出*號if (i 0 || i 4 || j 0 || j 6 ) {printf("*");}else{printf(" "…

AC_Dream 1211 Reactor Cooling

1 /*2 題意&#xff1a;無源無匯&#xff0c;并且每條邊的容量有上下界限的網絡流問題&#xff01;既然無源無匯&#xff0c;那么素有的節點都應該滿足“入流出流”&#xff01;3 輸出每一條邊的流量&#xff0c;使得滿足上面的條件。&#xff08;如果u->v有流…

c語言中const對于define優點,為什么大多數C開發人員使用define而不是const?

這有一個非常可靠的原因&#xff1a;C中的const并不意味著一些常量。 這只是意味著一個variables是只讀的。在編譯器需要一個常量的地方(例如非VLA數組的數組大小)&#xff0c;使用constvariables(如fieldWidth是不可能的。他們不一樣const只是一個限定符&#xff0c;它表示一個…

c語言程序設計期末試卷A,《C語言程序設計》期末試卷(A)..doc

《C語言程序設計》期末試卷(A).2011-12-1學期《C語言程序設計》期末試卷(A)班級____________姓名____________學號________________大題號一二三四總分得 分判卷 /核分人“一、選擇題”使用答題卡選擇。“二、看程序寫運行結果”答題處&#xff1a;題號答 案二、1二、2二、3“三…

codeforces B. Strongly Connected City(dfs水過)

題意&#xff1a;有橫向和縱向的街道&#xff0c;每個街道只有一個方向&#xff0c;垂直的街道相交會產生一個節點&#xff0c;這樣每個節點都有兩個方向&#xff0c; 問是否每一個節點都可以由其他的節點到達.... 思路&#xff1a;規律沒有想到&#xff0c;直接爆搜&#xff0…

c語言數組兩個值交換,如可交換兩個數組中的元素?

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓#include #include #include int main(void){int a[]{1,2,3,4,5,6,7,8};int b[]{9,10,11,12,13,15};int lena,lenb,randa,randb,randtimes;int i,temp;srand((unsigned)time(NULL));lena sizeof(a)/sizeof(int);lenb sizeof(b)/s…

Uvaoj 11248 Frequency Hopping(Dinic求最小割)

題意&#xff1a;1到n節點&#xff08;節點之間有一定的容量&#xff09;&#xff0c;需要流過C的流量&#xff0c;問是否可以&#xff1f;如果可以輸出possible&#xff0c; 否則如果可以擴大任意一條邊的容量 可以達到目的&#xff0c;那么輸出possible option&#xff1a;接…

隨機數歸并排序c語言,用C語言實現歸并排序

#include#include#include#include#define random(i) (rand()%i)#define N 12#define INFINITY 99999999//要排序的數存放在a數組匯總&#xff0c;p,q,r是數組下標void Merge(int *a,int p,int q,int r){int n1q-p1;int n2r-q;int *L(int *)malloc(sizeof(int)*n1);int *R(int …

UVAoj 11324 - The Largest Clique(tarjan + dp)

題意&#xff1a;給定一個有向圖&#xff0c;尋找一個點數最大集合&#xff0c;使得這個集合中的任意兩個點 u,v, 都有u->v 或者 v->u 或者u<>v 思路&#xff1a;首先將強連通分量通過tarjan算法求出來&#xff0c;然后進行縮點&#xff0c;也就是每一個縮點 所組成…

android開發藍牙自動連接電腦上,Android藍牙開發之自動連接設備

自動連接使用的是SharedPreferences這個來解決。private void Automaticconnection() {SharedPreferences sp getSharedPreferences("Dizhi", MODE_PRIVATE);String address sp.getString("address", "");if (!address.equals("")) …

hdu 2014鞍山賽區 5073 Galaxy

題意&#xff1a;就是給你 n 個數&#xff0c;代表n個星球的位置&#xff0c;每一個星球的重量都為 1 &#xff01; 開始的時候每一個星球都繞著質心轉動&#xff0c;那么質心的位置就是所有的星球的位置之和 / 星球的個數 現在讓你移動 k 個星球到任意位置&#xff08;多個星球…

android onitemclicklistener 參數,android – 對listview中的項使用setOnItemClickListener

大家好,有一個應用程序,可以在SD卡上保存音頻.我創建了一個listview,它從sdcard中檢索文件名.我正在嘗試設置一個監聽器,所以當單擊文件名時,我可以啟動另一個播放該文件的意圖.當我嘗試設置監聽器并傳入一個新的OnItemClickListener()時,eclipse是紅色的下劃線.我知道我必須實…