在使用 CRT 类似的工具连接 linux 时,若运行某些程序,会锁定当前 ssh 窗口;若当前窗口退出,则程序结束运行;为避免因退出窗口而结束程序,需要使用后台运行程序的方式运行程序
后台运行程序命令如下
nohup java -jar xxx.jar >temp.txt 2>&1 &
注意:xxx.jar 为要运行的 java 程序;temp.txt 为当前目录下日志输出文件
若指定日志文件位置,命令如下
nohup java -jar xxx.jar > /usr/local/temp.txt 2>&1 &
temp.txt 在 usr 的 local 目录下
注意:
若将上述两条命令写成如下形式
nohup java -jar xxx.jar >/usr/local/temp.txt &
或
nohup java -jar xxx.jar >temp.txt &
会报错 nohup: 忽略输入重定向错误到标准输出端
其原因在于:Linux下默认有两种输出流:
1 、标准输出流
2 、标准错误输出流
Linux 下一切皆文件,这里的1和2表示的就是输出设备文件的文件描述符。默认情况下,无论是标准输出还是标准错误输出,都是输出到终端显示的。但也可以通过重定向输出到其他地方。上边两条命令之所以会报错,是因为它们只指定了标准输出流,而没有指定 标准错误输出流,nohup java -jar xxx.jar >temp.txt & 是 nohup java -jar xxx.jar 1>temp.txt & 的缩写,而 nohup java -jar xxx.jar >temp.txt 2>&1 & 是把 标准错误输出流 重定向到 标准输出流 中,而 标准输出流 又导入文件 temp.txt 里面