SSH或安全Shell简单来说就是一个人可以远程访问其他用户的其他系统,但仅在命令行即非GUI模式的方法。 在更多的技术术语中,当我们ssh到其他用户在某些其他系统上并在该机器上运行命令时,它实际上创建一个伪终端并将其附加到登录用户的登录shell。

断开连接后SSH会话运行的5种方法

当我们退出会话或会话超时闲置一段时间后,将SIGHUP信号发送到伪终端以及所有已在该终端上运行的作业,甚至有自己的父作业的作业在伪终端上发起的也被发送SIGHUP信号并被强制终止。

只有配置为忽略此信号的作业才能在会话终止后生存。 在Linux系统上,我们可以有许多方法使这些作业在远程服务器或任何计算机上运行,​​即使在用户注销和会话终止之后。

了解Linux上的进程

正常过程

正常过程是具有会话的寿命的过程。 它们在会话期间作为前台进程启动,并在特定时间跨度或在会话注销时结束。 这些进程的所有者是系统的任何有效用户,包括root用户。

孤立进程

孤立进程是最初有父进程创建进程的进程,但在一段时间后,父进程无意中死亡或崩溃,使init成为该进程的父进程。 这样的进程使init作为其直接父进程,等待这些进程直到它们死亡或结束。

守护进程

这些是一些有意孤立的进程,这些有意在系统上运行的进程称为守护程序或有意孤立的进程。 它们通常是长时间运行的进程,它们一旦启动,然后从任何控制终端分离,以便它们可以在后台运行,直到它们没有完成,或者最终引发错误。 这种过程的父母故意使孩子在后台执行。

断开连接后保持SSH会话运行的技术

在断开连接后,可以有多种方法使ssh会话运行,如下所述:

1.使用屏幕命令保持SSH会话运行

屏幕是Linux的一个文本窗口管理器,它允许用户管理在同一时间多个终端会话,会话之间切换,会话日志记录在屏幕上运行会议,甚至可以恢复届,我们无需担心会话所需的任何时间被记录输出或端子闭合。

屏幕会话可以开始,然后从控制终端分离,使它们在后台运行,然后在任何时间甚至在任何地方恢复。 只需要在屏幕上启动会话,并在需要时将其从伪终端(或控制终端)分离并注销。 当你感觉到,你可以重新登录并恢复会话。

启动屏幕会话

键入“屏幕”命令后,你将在一个新的屏幕会话,本次会议中,您可以创建新的窗口,遍历窗口之间,锁定屏幕,并做更多的东西,你可以正常的终端上做的。$ screen

在Linux中启动屏幕会话

一旦屏幕会话启动,您可以运行任何命令,并通过分离会话来保持会话运行。

在屏幕会话中运行命令

分离屏幕

只是当你想退出远程会话,但你想保持在该机器上创建的会话活着,那么你只需要做的是将屏幕从终端分离,以便它没有控制终端。 这样做后,您可以安全地注销。

从远程终端分离屏幕,只要按下“Ctrl+a”后面紧跟着“d”您将回到码头看到,屏幕上是分离的消息。 现在您可以安全地注销,您的会话将保持活动状态。

分离Linux屏幕会话

恢复分离屏幕会话

如果你想恢复您注销前留下了分离屏幕会话,只需再次重新登录到远程终端输入“screen -r”如果只有一个屏幕打开的情况下,如果多屏会被打开运行“screen -r ”$ screen -r

$ screen -r

恢复分离屏幕会话

要了解更多关于屏幕的命令,以及如何使用它只是按照链接: 使用屏幕命令管理Linux终端会话

2.使用Tmux(终端复用器)保持SSH会话运行

TMUX是创建的,是用于屏幕更换另一个软件。 它拥有的大部分屏幕的能力,很少有额外的功能,这使得它比屏幕上更强大。

除了屏幕提供的所有选项之外,它允许在多个窗口之间水平或垂直分割窗格,调整窗口窗格大小,会话活动监视,使用命令行模式的脚本等。由于tmux的这些特性,它已被近乎所有的Unix发行版,甚至已经包含在OpenBSD的基本系统中。

启动Tmux会话

在远程主机并输入TMUX做SSH之后,你将进入一个新的会话使用一个新窗口打开在你的面前,其中你可以做任何你一个正常的终端上完成。$ tmux

启动tmux终端会话

在终端上执行操作后,您可以从控制终端分离该会话,使其进入后台,您可以安全地注销。

在Tmux会话中执行Linux命令

从终端分离Tmux会话

要么你可以运行“tmux detach”运行TMUX会话,也可以使用快捷键(Ctrl+b then d) 之后,您当前的会话将分离,您将回到您的终端,从那里你可以安全地注销。$ tmux detach

在Linux中分离Tmux会话

恢复关闭的Tmux会话

要重新打开会话,你超脱,保持不变,当你退出系统,只需重新登录到远程计算机,然后键入“TMUX重视”重新连接到关闭会话,它将会依然存在并运行。$ tmux attach

恢复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 &

在后台运行Linux命令

恢复会话以查看作业是否仍在运行

当您再次重新登录,您可以检查命令的状态,通过将其带回前台'fg %JOBID'来监测其进展情况等。 下面,输出显示作业已完成,因为它在重新登录时不显示,并已给出显示的输出。# fg %JOBID

在后台运行Linux命令

4.使用disown命令保持SSH会话运行

即使会话注销后让你的命令,或者在后台单任务运行和另一种优雅的方式仍然存活或断开是使用不认 。

不认 ,从系统中删除的处理作业列表中的作业,所以这个过程是从会话断开时被杀害,当您注销它不会被shell收到SIGHUP屏蔽。

这种方法的缺点是,它应该只对那些不需要从标准输入既不需要任何输入写入到标准输出的作业中使用的,除非你专门重定向作业的输入和输出,因为当作业将尝试使用标准输入交互或标准输出 ,这将暂停。

使用后台禁用执行命令

下面,我们发送ping命令来背景,使UT不断运行,并会从任务列表中删除。 可以看出,这项工作首先暂停后,它仍然在工作清单进程ID:15368。$ ping howtoing.com > pingout &

$ jobs -l

$ diswon -h %1

$ ps -ef | grep ping

使用Disown运行Linux命令

之后,拒绝信号传递到作业,并从作业列表中删除,虽然仍然在后台运行。 当您重新登录到远程服务器时,作业仍将运行,如下所示。$ ps -ef | grep ping

验证作业状态

5.使用setsid命令使SSH会话运行

另一个实用程序来实现所要求的行为setsid。NOHUP具有意义上的缺点,即该过程的进程组保持相同,以便与nohup的运行过程是易受发送到的整个过程组的任何信号(例如Ctrl + C ) 。

在另一方面setsid分配正在执行一个新的进程组的进程,因此,创建的过程完全是在一个新分配的进程组,可以不用担心,甚至会注销后被杀安全地执行。

使用setsid执行任何命令

这里,它示出了该过程'sleep 10m'已经从控制终端拆下,由于时间已经创建。$ setsid sleep 10m

$ ps -ef | grep sleep

使用Setsid运行Linux命令

现在,当您重新登录会话时,您仍然会发现此进程正在运行。$ ps -ef | grep [s]leep

Linux进程运行背景

结论

你可以想到什么方法来保持你的进程运行,即使你从SSH会话注销? 如果有任何其他和有效的方式,你可以想到,请在你的评论中提及。

linux ssh 远程会话保存,远程SSH会话和流程在断开后运行的5种方法相关推荐

  1. Linux进程在后台运行的几种方法

    目录 nohup / setsid / & disown screen 总结 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, ...

  2. Linux 技巧:让进程在后台可靠运行的几种方法

    [转] 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败.如何让命令提交后不受本地关闭终端窗口/ ...

  3. Linux 技巧:让进程在后台可靠运行的几种方法(转)

    我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败.如何让命令提交后不受本地关闭终端窗口/网络断开 ...

  4. Linux 让进程在后台可靠运行的几种方法

    场景 思考三个问题: 想让进程在断开连接后依然保持运行? 如果该进程已经开始运行了该如何补救? 如果有大量这类需求如何简化操作? 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Li ...

  5. Linux下让进程在后台可靠运行的几种方法

    想让进程在断开连接后依然保持运行?如果该进程已经开始运行了该如何补救? 如果有大量这类需求如何简化操作? 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一 ...

  6. linux进程后台运行的几种方法 - nohup/setsid//disown/screen

    我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败.如何让命令提交后不受本地关闭终端窗口/网络断开 ...

  7. ubuntu linux下下打开iso文件两种方法,linux Ubuntu的ISO镜像怎么安装啊?解压出来后运行那个文件?...

    匿名用户 1级 2008-09-29 回答 WUBI安装方式(推荐给第一次接触ubuntu,担心安装会出问题的朋友使用) 在8.04的live 光盘支持WUBI安装方式,在光盘的根目录,有一个wubi ...

  8. linux设置系统自动开机,Linux系统中设置开机自动运行的两种方法

    有时可能会需要在重启时或者每次系统启动时运行某些命令或者脚本.我们要怎样做呢?本文中我们就对此进行讨论. 我们会用两种方法来描述如何在 CentOS/RHEL 以及 Ubuntu 系统上做到重启或者系 ...

  9. 转-Linux进程后台运行的几种方法

    为什么80%的码农都做不了架构师?>>>    http://linux.ctocio.com.cn/179/12162679.shtml 我们经常会碰到这样的问题,用telnet/ ...

最新文章

  1. jq 请求本地的json_jQuery使用ajax读取本地json文件的案例
  2. ORACLE 数据字典
  3. 关于WriteFile函数的lpNumberOfBytesWritten在Win8开始的不同
  4. python 小说-用Python爬下十几万本小说,再也不会闹书荒!
  5. UA OPTI512R 傅立叶光学导论22 透镜成像与傅立叶变换
  6. 《A Berkeley View of systems challenges for AI》总结
  7. JavaScript数据类型和变量学习小记
  8. 学习《apache源代码全景分析》之网络连接部分摘录
  9. js中apply和join
  10. HashTable 源码解读
  11. 机器学习理论知识部分--偏差方差平衡(bias-variance tradeoff)
  12. Tomcat下中文乱码的解决方法
  13. TensorFlow开发者证书 中文手册
  14. Apizza 使用方法
  15. 《统计学》第八版贾俊平第十一章一元线性回归知识点总结及课后习题答案
  16. 哈工大《同义词词林》共享版的若干改进
  17. ASO优化图标篇:App图标优化的几点建议
  18. 用计算机给手机充电,用电脑USB口长期给手机充电有危险吗?
  19. overleaf表格_LaTeX基本命令使用教程(清晰实例)(Overleaf平台)(论文排版)
  20. web前端入门到实战:JavaScript字符串转换数字

热门文章

  1. IDEA中导入VUE后,JS文件爆红解决办法
  2. VS Code 切换大小写
  3. 前后端敏感数据加密方案及实现_03
  4. 开发经验分享_05_葫芦画瓢
  5. Centos7 Docker容器操作_入门试炼03
  6. winform php 交互,WinForm开发,窗体显示和窗体传值
  7. php找不到phpmyadmin,phpMyAdmin 安装配置方法和问题解决
  8. vue中input多选_vue实现下拉多选vue实现多选下拉框
  9. 逻辑回归预测事件发生的概率_通过逻辑回归,对信用卡申请数据使用卡方分箱法预测违约率建模...
  10. 接口有个电池标志_有人说手机快充毁电池,真的假的?电池快充的原理是什么?...