为什么启动后台程序需要使用nohup
2021/10/21 20:11:56
本文主要是介绍为什么启动后台程序需要使用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进程组、会话、守护进程、终端的资料:
- Linux 的进程组、会话、守护进程_Linux教程_Linux公社-Linux系统门户网站
- Linux 进程、进程组、会话周期、控制终端
这篇关于为什么启动后台程序需要使用nohup的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南