首页 > 系统相关 >SIGHUP非进程挂起

SIGHUP非进程挂起

时间:2023-07-04 15:22:45浏览次数:48  
标签:SIGHUP terminal session 终端 https 进程

SIGHUP

https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html

hang up容易让人联想到进程挂起,

实际上这个挂起,是终端挂起。

 

Macro: int SIGHUP

The SIGHUP (“hang-up”) signal is used to report that the user’s terminal is disconnected, perhaps because a network or telephone connection was broken. For more information about this, see Control Modes.

This signal is also used to report the termination of the controlling process on a terminal to jobs associated with that session; this termination effectively disconnects all processes in the session from the controlling terminal. For more information, see Termination Internals.

 

 

tty终端

https://www.zhihu.com/question/21711307

 

作者:大川
链接:https://www.zhihu.com/question/21711307/answer/2231006377
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

上古时期,都有实体

理解完全不是难事

这个IBM的广告,美女左手是terminal,右手是console

底图来源:https://www.ibm.com/ibm/history/ibm100/images/icp/Z491903Y91074L07/us__en_us__ibm100__selectric__selectric_2__900x746.jpg
  • terminal 相对的是console
    • terminal是终端,不在主机上,远端控制
    • console是主机上的面板开关,本机控制
  • terminal是一个设备,最早借用了teletypewriter的产品形态,简称tty
    • 长得像台打字机,其实输入输出确实都打印在纸上
    • 后来进化出一个crt显示器

 

 

进程挂起

https://zhuanlan.zhihu.com/p/500263838

 

除了我们常说的进程五种基本状态——创建,就绪,阻塞,运行,终止外,还有一种非常重要的进程状态——进程挂起状态,今天就来说说进程的挂起。

 

进程挂起的定义:

 

当系统资源紧张的时候,操作系统会对在内存中的资源进行更合理的安排,这时就会将将某些优先级不高的进程设为挂起状态,并将其移到内存外面,一段时间内不对其进行任何操作,当条件允许的时候,会被操作系统再次调回内存,重新进入等待被执行的状态即就绪态,

 

 

 

 

终端挂起对进程的影响

https://www.cnblogs.com/sparkdev/p/12146305.html

 

session 的诞生与消亡

 

通常,新的 session 由系统登录程序创建,session 中的领头进程是运行用户登录 shell 的进程。新创建的每个进程都会属于一个进程组,当创建一个进程时,它和父进程在同一个进程组、session 中。

 

将进程放入不同 session 的惟一方法是使用 setsid 函数使其成为新 session 的领头进程。这还会将 session 领头进程放入一个新的进程组中。

 

当 session 中的所有进程都结束时 session 也就消亡了。实际使用中比如网络断开了,session 肯定是要消亡的。另外就是正常的消亡,比如让 session 的领头进程退出。一般情况下 session 的领头进程是 shell 进程,如果它处于前台,我们可以使用 exit 命令或者是 ctrl + d 让它退出。或者我们可以直接通过 kill 命令杀死 session 的领头进程。这里面的原理是:当系统检测到挂断(hangup)条件时,内核中的驱动会将 SIGHUP 信号发送到整个 session。通常情况下,这会杀死 session 中的所有进程。

 

session 与终端的关系
如果 session 关联的是伪终端,这个伪终端本身就是随着 session 的建立而创建的,session 结束,那么这个伪终端也会被销毁。
如果 session 关联的是 tty1-6,tty 则不会被销毁。因为该终端设备是在系统初始化的时候创建的,并不是依赖该会话建立的,所以当 session 退出,tty 仍然存在。只是 init 系统在 session 结束后,会重启 getty 来监听这个 tty。

 

 

标签:SIGHUP,terminal,session,终端,https,进程
From: https://www.cnblogs.com/lightsong/p/17525845.html

相关文章

  • Linux应用开发【第四章】Linux进程间通信应用开发
    文章目录4Linux进程间通信应用开发4.1初识进程4.1.1进程的概念4.1.1.1程序4.1.1.2进程4.1.1.3进程和程序的联系4.1.1.4进程和程序的区别4.1.2进程的操作(创建、结束、回收)4.1.2.1创建进程4.1.2.2结束进程4.1.2.3回收进程4.2进程为什么需要通信4.3进程通信之管道通信4.......
  • DeepFashion2 的多进程处理代码(带进度条)
    importjsonfromPILimportImage,ImageDrawimportosfromtqdmimporttqdmimportmultiprocessingfromfunctoolsimportpartialdefconvert_rgba_to_rgb(image,output_path): #转换为RGB模式 rgb_image=image.convert('RGB') #保存为JPEG格式 rgb_......
  • 记一次python消费kafka进程持续消耗内存问题
    前提:python写了一个kafka消费的脚本,脚本中消费kafka消息并将消费到的数据放在一个线程池中进行业务代码处理,使用supervisor管理这个脚本进程遇到问题:这个进程占用的内存会越来越大,知道将机器内存消耗完排查:网上找了一堆内存分析工具,好像都需要预埋代码,或者重新启动一个进程,全扯......
  • 【Linux进程管理】进程退出的几种方法
    进程退出当一个进程退出后,操作系统会释放掉这个进程的资源。包括这个进程分配的内存,打开的文件等等。所以进程退出后,不会出现内存泄漏的情况,进程一旦退出,所占的整个虚拟内存都被销毁,所有内存资源都会被系统回收函数描述exit执行完整的C库终止过程,终止进程,并向主机环境......
  • linux内存管理 rsyslog进程占用高内存
    rsyslog进程占用内存巨高发生险情后,立即进行排查,发现有1个节点还没有完全僵死,还能连上,只是非常卡,现象是1、内存被完全耗尽,系统swap被占用超过80%,操作非常卡顿2、负载贼高,16核的机器负载达到120+3、除了业务的进程占用内存高之外,还有一个进程占用内存也很高,rsyslogd4、osd进......
  • 云计算演变进程中,裸金属服务器为何备受关注?
    最早前,企业都别无选择地使用传统服务器,根据项目需求先进行采购,然后找机房托管,运维人员再去机房给物理机做配置、数据备份、维修维护等。不仅部署周期长,配置繁杂,而且占用极高的人力成本。后来出现了虚拟化,比如最出名的VMware软件,以及Xen,KVM等技术,能够实现在单台或多台物理机上进行虚......
  • 根据进程号查看oracle会话信息
    colsidformat9999colspidformat9999999999colserial#format9999999collogon_timeformata20colmachineformata30colterminalformata20setlinesize100selectp.spid,s.sid,p.pid,s.programfromv$processp,v$sessionswherep.addr=s.addrandp.......
  • 谈一谈进程、线程与协程
    进程、线程、协程概念什么是进程进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在Java中,当启动main方法时其实就是启动了一个JVM的进程,而main方法所在的线程就是这个进程中的一个线程,称为主......
  • python实现多进程和多线程
    https://blog.csdn.net/weixin_44917390/article/details/119610760创建多进程方法:importmultiprocessingimporttimedefsing():foriinrange(3):print("iamsingooo~")time.sleep(0.5)defdance():foriinrange(3):......
  • windows 杀掉某个端口的进程
    1、使用命令行工具,根据端口号查找对应进程netstat-ano|findstr:端口号 2、找到该端口所对应的进程ID(PID),并输入以下命令:taskkill/f/pid进程ID 即可将此端口的进程消灭......