▚ 01 问题描述
- 📢 我们在使用终端软件远程访问服务器时,由于终端软件窗口的意外关闭而导致运行的程序强制结束。

▚ 02 解决方法
- 这时,只需让程序彻底在后台执行,就与当前终端软件窗口是否关闭无关。
- 使用的命令为
nohup+&; - 例如想要运行的程序为
run,可以以下方式在后台运行:
nohop ./run &

▚ 03 原理解说
🚩 nohup + &组合 彻底使程序在后台运行
-
&可让程序在后台执行,但不能处理向标准输出设备打印内容的指令,比如程序中包含echo; - 而恰好如果,当前终端软件窗口已被关闭,后台程序就会因找不到标准输出设备而退出。
- 加上
nohop后,会在当前目录创建nohup.out文本文件来转存需要打印的内容;也即当后台程序有内容将要传输到标准输出设备时,nohup就会重定向在此文本文件中,不会影响程序的正常运行。
参考材料

本文介绍如何使用nohup命令结合后台运行符号(&)确保程序即使在终端关闭后也能继续运行。通过nohup命令可以重定向程序的标准输出到nohup.out文件,避免程序因失去标准输出设备而意外终止。
3048

被折叠的 条评论
为什么被折叠?



