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…

AC_Dream 1216 G - Beautiful People

题意&#xff1a;有n个人每人有一个力气值Si,美丽值Bi&#xff0c;满足Bi>Bj&&Si>Sj 或者 Bi<Bj&&Si<Sj 的人可以一起参见晚会&#xff0c;问最多有多少人可以一起参见晚会。思路&#xff1a; 我们根据S从小到大将所有人排序&#xff0c;然后看B最…

二级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…

codeforces B. Strongly Connected City(dfs水过)

题意&#xff1a;有横向和纵向的街道&#xff0c;每个街道只有一个方向&#xff0c;垂直的街道相交会产生一个节点&#xff0c;这样每个节点都有两个方向&#xff0c; 问是否每一个节点都可以由其他的节点到达.... 思路&#xff1a;规律没有想到&#xff0c;直接爆搜&#xff0…

Uvaoj 11248 Frequency Hopping(Dinic求最小割)

题意&#xff1a;1到n节点&#xff08;节点之间有一定的容量&#xff09;&#xff0c;需要流过C的流量&#xff0c;问是否可以&#xff1f;如果可以输出possible&#xff0c; 否则如果可以扩大任意一条边的容量 可以达到目的&#xff0c;那么输出possible option&#xff1a;接…

UVAoj 11324 - The Largest Clique(tarjan + dp)

题意&#xff1a;给定一个有向图&#xff0c;寻找一个点数最大集合&#xff0c;使得这个集合中的任意两个点 u,v, 都有u->v 或者 v->u 或者u<>v 思路&#xff1a;首先将强连通分量通过tarjan算法求出来&#xff0c;然后进行缩点&#xff0c;也就是每一个缩点 所组成…

hdu 2014鞍山赛区 5073 Galaxy

题意&#xff1a;就是给你 n 个数&#xff0c;代表n个星球的位置&#xff0c;每一个星球的重量都为 1 &#xff01; 开始的时候每一个星球都绕着质心转动&#xff0c;那么质心的位置就是所有的星球的位置之和 / 星球的个数 现在让你移动 k 个星球到任意位置&#xff08;多个星球…

codeforces B. Friends and Presents(二分+容斥)

题意&#xff1a;从1....v这些数中找到c1个数不能被x整除&#xff0c;c2个数不能被y整除&#xff01; 并且这c1个数和这c2个数没有相同的&#xff01;给定c1, c2, x, y&#xff0c; 求最小的v的值&#xff01; 思路&#xff1a; 二分容斥&#xff0c;二分找到v的值&#xff0c;…

Android延伸布局到状态栏,Android 状态栏透明

前言&#xff1a;最近项目大量用到状态栏透明&#xff0c;网上也出现很多库可以直接拿来用&#xff0c;个人认为没有必要那么重引用到一个库(有木有同学和我有一样的想法)&#xff0c;所以研究了一番&#xff0c;在此做个记录加强记忆也便后期查阅&#xff0c;如果无意中有幸能…

华为HarmonyOS 鸿蒙,华为鸿蒙HarmonyOS2.0手机开发者Beta版正式发布

据悉&#xff0c;本次手机开发者Beta测试支持以下中国境内主制式手机及平板电脑。手机&#xff1a;全网通(5G双卡)P40 、 全网通版P40 Pro、Mate30、Mate30(5G) 、Mate30 Pro、Mate30 Pro(5G)&#xff0c;型号清单为ANA-AN00、ELS-AN00、TAS-AL00、TAS-AN00、LIO-AL00、LIO-AN0…

android oneshot自动播放bug,移动端常见bug汇总001

前言本文是摘录整理了移动端常见的一些bug以及解决方案&#xff0c;第一篇&#xff0c;后面还会有持续的文章更新整理。点击样式闪动Q: 当你点击一个链接或者通过Javascript定义的可点击元素的时候&#xff0c;它就会出现一个半透明的灰色背景。A:根本原因是-webkit-tap-highli…

int.class 与 Integer.class

TYPE 表示的引用类型所对应的基本类型的Class对象&#xff01; 转载于:https://www.cnblogs.com/hujunzheng/p/4055471.html

android uber启动动画,模仿Uber的启动画面(上)

启动画面(Splash Screen)——不但给开发者们提供了一个尽情发挥、创建有趣动画的机会&#xff0c;也填补了App启动时从终端慢吞吞地下载数据的时间。启动画面(动态的)对于App至关重要&#xff1a;它可以让用户不失兴趣地耐心等待应用完成加载。尽管现在的启动画面多种多样&…

智慧屏用鸿蒙的生态,紧随鸿蒙OS手机版 ,智慧屏为什么对鸿蒙生态这么重要?...

原标题&#xff1a;紧随鸿蒙OS手机版 &#xff0c;智慧屏为什么对鸿蒙生态这么重要&#xff1f;12 月 21 日&#xff0c;华为正式发布了两款智慧屏新品&#xff0c;智慧屏 S 系列和车载智慧屏&#xff0c;前者是智慧屏的新系列&#xff0c;后者则是新开辟的车机产品线。没有意外…

MySQL不能插入中文字符及中文字符乱码问题

MySQL的默认编码是Latin1&#xff0c;不支持中文&#xff0c;要支持中午需要把数据库的默认编码修改为gbk或者utf8。在安装后MySQL之后&#xff0c;它的配置文件不是很给力&#xff0c;不知道你们的是不是&#xff0c;反正我的是&#xff01; 开始插入中文字符的时候出现如下错…

codeforces C. Bits(数学题+或运算)

题意&#xff1a;给定一个区间&#xff0c;求区间中的一个数&#xff0c;这个数表示成二进制的时候&#xff0c;数字1的个数最多&#xff01; 如果有多个这样的数字&#xff0c;输出最小的那个&#xff01; 思路&#xff1a;对左区间的这个数lx的二进制 从右往左将0变成1&#…

r语言 发送邮件html,r语言读取数据的方法

R 对于基于 SQL 语言的关系型数据库有良好的支持&#xff0c;这些数据库既有商业数据库 Oracle、Microsoft SQL Server、IBM DB2 等&#xff0c;也包含在 GNUGeneral Public License (GPL) 下发布的 MySQL 等开源数据库。RMySQL 包中提供了到 MySQL 数据库的接口&#xff1b;RO…

eclipse开发web应用程序步骤(图解)

*运行环境&#xff08;也就是服务器的选择&#xff09; 环境搭建好之后开始编写web程序&#xff01;然后右键->Run as -> Run on Server! 转载于:https://www.cnblogs.com/hujunzheng/p/4083560.html

android 测光模式,Android Camera1中的对焦与测光

Android Camera1开发系列连载&#xff1a;Android Camera1详解Android Camera1显示预览的四种方式对焦模式在使用特定的对焦模式的时候&#xff0c;必须确保相机支持该模式&#xff0c;相机支持的对焦模式可以通过Parameters#getFocusMode接口来获取&#xff1a;常用的对焦模式…