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.mzph.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是红色的下划线.我知道我必须实…