问题
在 Linux 服务器上运行程序时,断开终端连接时,程序会自动停止运行,并且程序输出的内容也会消失。
针对这种情况,我们需要一种可以在后台运行程序,并且可以跟踪查看输出的方法。
说明
SIGHUP
在 POSIX 兼容平台上,SIGHUP 是在进程的控制终端关闭时发送给该进程的信号。
解决方案
nohup
nohup
英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
- 在后台运行程序,程序输出会保存至当前目录下的
nohup.out
文件中。
nohup ./filename &
- 重定向输出
stdout
到指定文件,这里是当前目录下的output.txt
文件中。
nohup ./filename > output.txt &
- 重定向输出
stdout
和标准错误输出stderr
到指定文件。
nohup ./filename > output.txt 2 > &1 &
0 – stdin (standard input,标准输入) 1 – stdout (standard output,标准输出) 2 – stderr (standard error,标准错误输出)
tail
tail
命令可用于查看文件的内容,使用参数-f
可以用于跟踪正在改变的文件。
- 查看文件结尾 10 行
tail output.txt
- 查看文件结尾 10 行,并跟踪文件变化。
tail -f output.txt
- 查看文件结尾 20 行,并跟踪文件变化。
tail -n 20 -f output.txt
- 查看文件第 1 行开始,即全部内容,并跟踪文件变化。
tail -n +1 -f output.txt