nohub启动jar并保存日志到文件
在Linux系统中使用nohup
启动JAR包并保存日志到文件,可通过以下步骤实现:
一、基础命令 1. 标准输出与错误输出合并到单一文件
nohup java -jar your_app.jar > /path/to/logs/app.log 2>&1 &
1
• nohup
:使进程在后台持续运行,即使关闭终端也不会中断。
• > /path/to/logs/app.log
:将标准输出(正常日志)重定向到指定文件。
• 2>&1
:将标准错误输出重定向到标准输出,实现错误日志与正常日志合并存储。
• &
:后台运行进程。
2. 仅输出错误日志
nohup java -jar your_app.jar > /dev/null 2>/path/to/logs/error.log &
1
• > /dev/null
:丢弃标准输出(适用于仅需记录错误信息的场景)。
• 2> /path/to/logs/error.log
:将错误日志单独保存到指定文件。
二、进阶配置 1. 按日期分割日志文件
通过date
命令动态生成日志文件名,实现按日存储:
nohup java -jar your_app.jar > /path/to/logs/$(date +"%Y-%m-%d").log 2>&1 &
1
• $(date +"%Y-%m-%d")
:生成当前日期字符串(如2025-05-04.log
)。
• 注意:需确保目标目录已存在,否则需手动创建或通过脚本处理。
2. 使用cronolog
实现日志轮转
安装cronolog
工具后,可按日/月分割日志:
nohup java -jar your_app.jar | /usr/sbin/cronolog /path/to/logs/%Y-%m-%d.log &
1
• %Y-%m-%d
:自动生成日期格式的日志文件(如2025-05-04.log
)。
三、验证与维护 1. 查看实时日志
tail -f /path/to/logs/app.log # 实时跟踪日志更新
1
2. 检查进程状态
ps -ef | grep java # 查看Java进程是否运行
1
3. 停止进程
kill -9 <PID> # 通过进程ID终止服务
1
四、脚本化启动(推荐)
创建启动脚本start.sh
,便于重复使用:
#!/bin/bash
APP_HOME=/opt/app
LOG_DIR=$APP_HOME/logs
mkdir -p $LOG_DIR
nohup java -jar $APP_HOME/your_app.jar > $LOG_DIR/app_$(date +"%Y%m%d").log 2>&1 &
echo "应用已启动,日志路径:$LOG_DIR/app_$(date +"%Y%m%d").log"
1
2
3
4
5
6
2
3
4
5
6
• 赋予执行权限:chmod +x start.sh
。
• 运行脚本:./start.sh
。
五、注意事项
- 路径权限:确保日志目录具有写入权限,否则会因权限不足导致启动失败。
- 日志文件大小:长期运行需定期清理或配置日志轮转(如
logrotate
工具)。 - JVM参数优化:根据需求调整内存参数(如
-Xms
、-Xmx
),避免内存溢出。
最佳实践 • 推荐配置:合并标准输出与错误日志,便于统一排查问题。
• 日志保留策略:结合cron
定时任务或日志管理工具(如logrotate
)定期归档旧日志。
通过以上方法,可高效管理后台运行的JAR服务并保存日志,满足生产环境需求。
编辑 (opens new window)
上次更新: 2025/06/10, 09:18:05