ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

为什么启动后台程序需要使用nohup

2021-10-21 17:59:24  阅读:292  来源: 互联网

标签:SIGHUP 后台程序 启动 终端 Linux 进程 nohup


在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进程组、会话、守护进程、终端的资料:

标签:SIGHUP,后台程序,启动,终端,Linux,进程,nohup
来源: https://blog.csdn.net/raoxiaoya/article/details/120891619

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有