编辑2016年:

这个Q& A早于systemd v230 debacle.从systemd v230开始,新的默认设置是终止终止登录会话的所有子节点,无论采取了哪些历史上有效的预防措施来防止这种情况.可以通过在/etc/systemd/logind.conf中设置KillUserProcesses = no来更改行为,或者使用特定于systemd的机制在用户空间中启动守护程序来规避行为.这些机制超出了这个问题的范围.

下面的文本描述了传统上在UNIX设计空间中工作的时间比Linux已经存在的时间长.

他们会被杀死,但不一定立即被杀死.这取决于SSH守护程序确定您的连接已停止所需的时间.以下是一个较长的解释,将帮助您了解它的实际工作原理.

登录时,SSH守护程序为您分配了一个伪终端,并将其附加到用户配置的登录shell.这称为控制终端.你在那个时候正常开始的每一个程序,无论多少层太深,最终都会将它的祖先追溯到那个外壳.您可以使用pstree命令进行观察.

当与您的连接关联的SSH守护进程确定您的连接已死时,它会向登录shell发送挂断信号(SIGHUP).这通知shell你已经消失了它应该开始清理它自己.此时发生的事情是特定于shell(在其文档页面中搜索“HUP”),但在大多数情况下,它将在终止之前开始向与其关联的正在运行的作业发送SIGHUP.反过来,这些过程中的每一个都将执行它们在接收到该信号时配置的任何操作.通常这意味着终止.如果这些工作有自己的工作,信号也会经常传递.

在控制终端挂断后仍然存在的进程要么与自己的终端(你在其中启动的守护程序进程)解除关联,要么使用带有前缀的nohup命令调用的进程. (即“不要挂断”)守护进程以不同的方式解释HUP信号;因为它们没有控制终端并且不自动接收HUP信号,所以它被重新用作管理员的手动请求以重新加载配置.具有讽刺意味的是,这意味着大多数管理员都不会为非守护进程学习这种信号的“挂断”使用,直到很久以后.这就是你读这个的原因!

终端多路复用器是在断开连接之间保持shell环境完整的常用方法.它们允许您以稍后可以重新连接到它们的方式从shell进程中分离,无论该断开是偶然还是故意. tmux和屏幕是比较流行的;使用它们的语法超出了你的问题的范围,但它们值得研究.

有人请求我详细说明SSH守护进程需要多长时间才能确定您的连接已经死亡.这是一种特定于SSH守护程序的每个实现的行为,但是当任何一方重置TCP连接时,您可以指望所有这些行为终止.如果服务器尝试写入套接字并且TCP数据包未被确认,则会很快发生,如果没有尝试写入PTY,则会缓慢发生.

在这个特定的上下文中,最有可能触发写入的因素是:

>尝试写入服务器端PTY的进程(通常是前台进程). (服务器 – >客户端)

>用户尝试在客户端写入PTY. (客户端 – >服务器)

>任何类型的Keepalive.默认情况下,这些通常不是由客户端或服务器启用的,通常有两种风格:应用程序级别和基于TCP的(即SO_KEEPALIVE). Keepalive相当于服务器或客户端不经常向另一端发送数据包,即使没有任何理由可以写入套接字.虽然这通常是为了避免过快地连接超时的防火墙,但它具有额外的副作用,即当另一方没有更快地响应时发送者注意到.

TCP会话的通常规则适用于此:如果客户端和服务器之间的连接中断,但在问题期间双方都没有尝试发送数据包,则连接将继续存在,前提是双方都在事后响应并接收到预期的TCP序号.

如果一方已确定套接字已死,则效果通常是立即的:sshd进程将发送HUP并自行终止(如前所述),或者客户端将通知用户检测到的问题.值得注意的是,仅仅因为一方认为另一方已经死亡并不意味着另一方已被通知此事.连接的孤立端通常将保持打开状态,直到它尝试写入并超时,或从另一端接收TCP重置. (如果此时连接可用)此答案中描述的清理仅在服务器注意到后才会发生.

linux自动断开会话,linux – 从SSH会话断开连接是否会导致程序崩溃?相关推荐

  1. linux ssh 远程会话保存,远程SSH会话和流程在断开后运行的5种方法

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

  2. linux 自动务份,Linux下设置ADSL自动拨号上网

    前段时间下载了红帽的linux,版本为redhat 9.0,整整刻了三张CD.最初是为了体验一下linux下QQ聊天软件的功能,最后因内核太低(官方推荐内核在2.6以上,我下载的版本是2.4)而告终. ...

  3. linux自动安装光盘,Linux(centos6.4)自动安装光盘制作

    一.为什么要制作Linux自动安装光盘 1.机房的服务器少则几十台,多则上百台,几千台,安装的时候,这么多的服务器不可能一台一台的安装,这时候就需要自动安装光盘的协助. 2.如果机房的某台服务器需要格 ...

  4. linux 自动恢复文件,Linux FSCK自动修复文件系统

    背景: Linux系统(Ubuntu)在运行时,断电等非正常关机操作,会导致ext4文件系统数据损坏.严重时会导致系统崩溃.如下log就是系统数据损坏.检查方法: 1.开机log,如上log就是开机时 ...

  5. linux服务器会话超时,解决SSH会话连接超时问题

    目前大多数ssh服务是运行在Linux系统上的sshd服务.当访问终端在windows上时,各终端软件,如,putty,SecureCRT等,大多支持设置向服务器端自动发送消息,来防止终端定期超时.其 ...

  6. linux 自动ping脚本,linux上ping脚本及zabbix3.xx上自动发现

    有时候,我们需要在linux上ping一些地址,判断地址是否被占用 一.编写shell脚本 脚本如下:#!/bin/bash for i in 192.168.16.{1..255} do ( pin ...

  7. linux自动切换tty,Linux 中不适用功能键切换TTY

    本简要指南介绍了在类 Unix 操作系统中如何在不使用功能键的情况下切换 TTY.在进一步讨论之前,我们将了解 TTY 是什么.正如在 AskUbuntu 论坛的一个答案[1]中所提到的,TTY这个词 ...

  8. linux自动挂载方法,Linux操作系统下硬盘手工和自动挂载的方法

    1. 手工挂载 在Linux中也可以读取Windows分区,包括fat32格式的和ntfs格式的.首先你得知道Linux下对硬盘分区的称呼.比如Windows下的C盘通常是hda1,D盘是hda5,E ...

  9. linux自动执行top,Linux top 命令使用

    top命令结合jvm诊断工具jstack能够快速帮我们定位有问题的代码位置,输入top命令,运行图如下 CPU负载 第一行包括运行时间.当前时间.用户数量和系统平均负载,其中后面三个数字就是一分钟.五 ...

最新文章

  1. HttpSessionListener监听Session的创建和失效
  2. wifi linux 驱动分析,Linux 下wifi 驱动开发(二)—— WiFi模块浅析
  3. python 列表,元祖,字典的区别
  4. socket timeout是什么引起的_MySQL C API 参数 MYSQL_OPT_READ_TIMEOUT 的一些行为分析
  5. Mysql数据库常用命令,mysql速学实用教程。
  6. CSDN 如何删除自己不用的分类(亲测有效!)
  7. kubernetes视频教程笔记 (37)-部署 EFK 平台 日志收集 展示
  8. icem密度盒怎么设置_哪种外卖盒最健康?常吃外卖的必知!
  9. 便携式车用CAN总线分析仪can分析仪
  10. WeX5和BeX5的区别
  11. java 前端ui框架_5 个优秀前端 UI 框架
  12. 医学超声成像—合成孔径法(Synthetic Aperture Methods)[1]
  13. Testdisk 修复磁盘分区表丢失
  14. 如何实现用户关系的自动绑定?
  15. 软件项目最常见的失败原因分析
  16. 东北大学计算机考研专业842包括什么,2020年东北大学842《计算机专业基础》考研大纲...
  17. T---EXCEL表格换行
  18. 创业遇到困难怎么解决,解决困难是创业成功的关键
  19. GlusterFS扩展操作及性能测试工具
  20. 从业务出发,来谈谈策略模式

热门文章

  1. pytorch将Tensor转为list
  2. 网络爬虫之css选择器
  3. oracle函数 授权,如何在Oracle中以普通用户身份运行dbms_crypto函数?
  4. idata界面_iData手持移动终端组合键恢复出厂设置教程
  5. eclipse常见小问题
  6. JS判断UA动态加载CSS的方法
  7. [bzoj1009](HNOI2008)GT考试 (kmp+矩阵快速幂加速递推)
  8. Hadoop: The Definitive Guide (3rd Edition)
  9. 细说WCF中的会话模式
  10. [转]Android截屏及图片解析