▚ 01 问题描述
- 📢 我们在使用终端软件远程访问服务器时,由于终端软件窗口的意外关闭而导致运行的程序强制结束。
▚ 02 解决方法
- 这时,只需让程序彻底在后台执行,就与当前终端软件窗口是否关闭无关。
- 使用的命令为
nohup
+&
; - 例如想要运行的程序为
run
,可以以下方式在后台运行:
nohop ./run &
▚ 03 原理解说
🚩 nohup + &组合 彻底使程序在后台运行
-
&
可让程序在后台执行,但不能处理向标准输出设备打印内容
的指令,比如程序中包含echo
; - 而恰好如果,当前终端软件窗口已被关闭,后台程序就会因找不到标准输出设备而退出。
- 加上
nohop
后,会在当前目录创建nohup.out文本文件来转存需要打印的内容;也即当后台程序有内容将要传输到标准输出设备时,nohup
就会重定向在此文本文件中,不会影响程序的正常运行。