Linux 后台启动java jar 程序 nohup java -jar
nohup java -jar demo-0.0.1-SNAPSHOT.jar > app.log 2>&1 & 解释此指令
这条Linux命令是用于后台运行Spring Boot应用的完整指令,我来分解解释每个部分:
-
nohup
- 忽略挂断信号(HUP),保证终端关闭后程序继续运行 -
java -jar demo-0.0.1-SNAPSHOT.jar
- 使用Java运行指定的Spring Boot可执行JAR包 -
> app.log
- 将标准输出重定向到app.log文件(覆盖模式) -
2>&1
- 将标准错误输出重定向到标准输出(即也写入app.log) -
&
- 让命令在后台运行
组合效果:
- 在后台启动Spring Boot应用
- 所有输出(包括错误)都记录到app.log文件
- 即使用户退出SSH会话,程序仍会持续运行
- 适合生产环境部署
补充说明:
- 如需追加日志而不是覆盖,应使用
>> app.log
- 实际使用时建议添加JVM参数,例如:
nohup java -Xms512m -Xmx1024m -jar demo.jar >> app.log 2>&1 &
- 查看日志可用
tail -f app.log
若不指定具体的日志文件名(如app.log),常见的后台运行Java程序命令有以下几种写法:
1、默认输出到nohup.out文件(自动生成)
nohup java -jar demo.jar &
这会自动在当前目录生成nohup.out文件记录所有输出1112
2、完全丢弃所有输出(不保存日志)
nohup java -jar demo.jar >/dev/null 2>&1 &
将标准输出和错误都重定向到空设备89
3、按日期动态生成日志文件
nohup java -jar demo.jar >>demo-$(date +%Y-%m-%d).log 2>&1 &
每天会自动创建带日期的日志文件(如demo-2025-07-02.log)5
4、分离标准输出和错误输出
nohup java -jar demo.jar >>stdout.log 2>>stderr.log &
将正常日志和错误日志分别存储16
注意:
>
表示覆盖写入,>>
表示追加写入- 生产环境建议采用第3或第4种方式保留日志516
- 使用
tail -f 日志文件名
可实时查看日志