内容简介:在linux服务器上,启动程序时在尾部添加当终端退出后,该终端启动的后台程序也原因是终端退出后,该终端启动的后台程序会收到SIGHUP信号。如果后台程序内部没有处理SIGHUP信号,SIGHUP信号的默认处理行为是停止程序运行。
在 linux 服务器上,启动程序时在尾部添加 &
,可以把程序丢到后台运行。
当终端退出后,该终端启动的后台程序也 可能 会停止运行。
原因是终端退出后,该终端启动的后台程序会收到SIGHUP信号。如果后台程序内部没有处理SIGHUP信号,SIGHUP信号的默认处理行为是停止程序运行。
为什么 后台程序可能会停止运行
我用了 可能 两个字呢?因为我在实验时发现这和终端环境有关系。
当我使用一台终端配置的比较完善的mac电脑(安装了iterm,zsh,tmux等一堆乱七八糟的东西)去操作远程服务器时,我发现退出终端后,终端启动的后台程序并没有退出。为了进一步验证,我在关闭终端后,重新打开终端,在本地使用netstat和ps命令查看,发现和远程服务器的连接依然保持存在。
而当我使用一台比较原始的mac电脑去操作远程服务器时,我发现退出终端后,终端启动的后台程序也停止了。
为了避免终端退出时后台程序也停止运行,可选择使用如下几种方式:
- 在后台程序内部编写处理SIGHUP信号的代码
- 将后台程序编写为daemon守护进程
- 使用nohup命令启动我们的后台程序
nohup官网地址: http://www.gnu.org/software/coreutils/manual/html_node/nohup-invocation.html
官网的简单介绍:
nohup runs the given command with hangup signals ignored, so that the command can continue running in the background after you log out.
关于Linux进程组、会话、守护进程、终端的资料:
我的测试程序,以及一些命令:
#include <signal.h> #include <stdio.h> void func(int sig) { // 通过 man signal,可以看到SIGHUP对应的信号值为1 // 1 SIGHUP terminate process terminal line hangup fprintf(stderr, "sig:%d\n", sig); fflush(stderr); exit(0); } int main() { int i = 0; // 程序内部处理SIGHUP signal(SIGHUP, func); for (;;) { fprintf(stderr, "%d\n", i++); fflush(stderr); sleep(1); } return 0; }
# 远程 $gcc main.c $./a.out $./a.out 2> stderr.txt & $nohup ./a.out 2> stderr.txt & $jobs $ps -ef | grep a.out $tail -f stderr.txt # 本地 $ps -ef | grep ssh $netstat -an | grep 22
原文链接: https://pengrl.com/p/20022/
原文出处: yoko blog ( https://pengrl.com )
原文作者: yoko ( https://github.com/q191201771 )
版权声明:本文欢迎任何形式转载,转载时完整保留本声明信息(包含原文链接、原文出处、原文作者、版权声明)即可。本文后续所有修改都会第一时间在原始地址更新。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 后台Activity启动的限制
- Android打开时启动后台服务
- 为什么启动后台程序需要使用 nohup
- nodejs入门之后台服务的几种启动方式
- Linux 后台服务启动方式 systemd、daemon、nohup 大比拼
- Tomcat 7 启动分析(一)启动脚本
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据挖掘概念与技术
(加)Jiawei Han;Micheline Kamber / 范明、孟小峰 / 机械工业 / 2007-3 / 55.00元
《数据挖掘概念与技术(原书第2版)》全面地讲述数据挖掘领域的重要知识和技术创新。在第1版内容相当全面的基础上,第2版展示了该领域的最新研究成果,例如挖掘流、时序和序列数据以及挖掘时间空间、多媒体、文本和Web数据。本书可作为数据挖掘和知识发现领域的教师、研究人员和开发人员的一本必读书。 《数据挖掘概念与技术(原书第2版)》第1版曾是受读者欢迎的数据挖掘专著,是一本可读性极佳的教材。第2版充实了数据......一起来看看 《数据挖掘概念与技术》 这本书的介绍吧!