如何通过nohup命令为Java jar包自动传递7天前的日期参数
解决方案
你只需要修改startup.sh脚本,在其中加入日期计算逻辑,将计算好的7天前日期作为参数传递给jar包即可,无需修改crontab配置。
修改后的完整startup.sh脚本(适用于Linux GNU date环境,绝大多数服务器默认使用该环境)
echo "Kicking off the app..." source ~/.bashrc cd /qa/updateprocess/ # 计算当前日期往前推7天的日期,格式为YYYY-MM-DD SEVEN_DAYS_AGO=$(date -d "7 days ago" +%Y-%m-%d) # 启动jar时传入日期参数,此处假设你的Spring Boot项目接收参数名为--before-date,可根据实际参数名调整 nohup /opt/jdk-11.0.2/bin/java -Xmx768m -Xms256m -Dlogging.config=/qa/updateprocess/logback.xml -jar /qa/updateprocess/update-service.jar --spring.profiles.active=qa --before-date=${SEVEN_DAYS_AGO} &> logs/console.log&
补充说明
- 如果你使用的是macOS/BSD类系统,日期计算命令需替换为
SEVEN_DAYS_AGO=$(date -v-7d +%Y-%m-%d) - 若你的jar包接收的是位置参数而非Spring格式的启动参数,直接将
${SEVEN_DAYS_AGO}放在jar包路径之后即可,不需要加参数名前缀 - 修改完成后可以手动执行一次
/qa/updateprocess/startup.sh,通过ps aux|grep update-service.jar检查启动参数是否正确携带了日期 - 若crontab执行时出现日期计算异常,可替换为date命令的绝对路径,执行
which date可查询你环境中date的绝对路径,比如改为/usr/bin/date -d "7 days ago" +%Y-%m-%d
内容的提问来源于stack exchange,提问作者user3919727
相关产品推荐
相关产品推荐

