linux中setup的基本操作:Linux中的SIGHUP信号
linux中setup的基本操作:Linux中的SIGHUP信号https://developer.ibm.com/articles/au-usingtraps/在早期的实现中,没有用户自定义信号(例如后来添加的 SIGUSR1 和 SIGUSR2),因此计算机程序可以自己截取和解释收到的信号。有些守护程序(daemon),例如Apache 和 Sendmail 等,由于不需要控制终端,因此它们将 SIGHUP 解释为 重新读取配置文件或重新初始化。随着网络的流行,串行线路连接几乎消失,于是SIGHUP 的含义在现代系统上发生了一些变化,现在SIGHUP通常意味着控制伪终端或虚拟终端(pseudo or virtual terminal)已关闭。如果终端窗口关闭时仍然有命令在执行,那么命令进程就会收到 SIGHUP信号。SIGHUP 的默认操作是终止进程。也就是说,当终端关闭时,系统会终止所有它启动的正在运行的进程。不过这通常并不适用于守护进程,因为守
在 Linux 系统(以及其他类 Unix 操作系统)中,信号被用于进程间的通信。信号是一个发送到某个进程或同一进程中的特定线程的异步通知,用于通知发生的一个事件。从 1970 年贝尔实验室的 Unix 面世便有了信号的概念,而现在它已经被定义在了 POSIX 标准中。
在 Linux 中,理解信号的概念是非常重要的。这是因为,信号被用于通过 Linux 命令行所做的一些常见活动中。例如,每当你按 Ctrl C 组合键来从命令行终结一个命令的执行,你就使用了信号。
在 Shell 命令行提示符 下,输入kill -l命令可以显示所有信号的信号值和相应的信号名。
历史上的SIGHUP早期,人们使用终端(Terminal)通过串行线路(Serial Line)和RS232协议连接和控制大型计算机系统。当用户挂断(hanging up)调制解调器断开连接时就会产生一个SIGHUP信号发送给计算机程序。
在早期的实现中,没有用户自定义信号(例如后来添加的 SIGUSR1 和 SIGUSR2),因此计算机程序可以自己截取和解释收到的信号。有些守护程序(daemon),例如Apache 和 Sendmail 等,由于不需要控制终端,因此它们将 SIGHUP 解释为 重新读取配置文件或重新初始化。
现在的SIGHUP随着网络的流行,串行线路连接几乎消失,于是SIGHUP 的含义在现代系统上发生了一些变化,现在SIGHUP通常意味着控制伪终端或虚拟终端(pseudo or virtual terminal)已关闭。如果终端窗口关闭时仍然有命令在执行,那么命令进程就会收到 SIGHUP信号。SIGHUP 的默认操作是终止进程。也就是说,当终端关闭时,系统会终止所有它启动的正在运行的进程。
不过这通常并不适用于守护进程,因为守护进程通常必须继续运行。因此,那些 shell 启动的守护进程通常会忽略 SIGHUP 信号。它们通常立刻将控制权返回给 shell。如果它们没有返回,shell 脚本将永远等待守护进程退出。
与SIGHUP类似的一些信号https://developer.ibm.com/articles/au-usingtraps/
- SIGHUP - hangup or exit a foreground running process from a terminal
- SIGINT - Ctrl-C from the keyboard
- SIGQUIT - Ctrl-\ from the keyboard
- SIGTERM - software termination signal
- https://developer.ibm.com/articles/au-usingtraps/
- https://en.wikipedia.org/wiki/SIGHUP
- https://itsfoss.com/stop-program-linux-terminal/
- https://geek-university.com/background-and-foreground-processes/
- https://www.ibm.com/docs/en/zos/2.3.0?topic=daemons-starting
- https://www.tecmint.com/linux-process-management/