我有一些执行java项目的逻辑;当我输入它时,它都在终端控制台中工作,但不在 cron 调度程序中:
运行第一个微服务并从 POST 请求中获取变量:
java -jar /root/parser-0.0.1-SNAPSHOT.jar
value=$(curl -d '{"query":"java-middle", "turnOff":true}' -H "Content-Type: application/json" -X POST http://localhost:8080/explorer)
v2=$(echo ${value} | jq '.id')
Run Code Online (Sandbox Code Playgroud)
测试:
echo $v2
18
Run Code Online (Sandbox Code Playgroud)
18 - 来自数据库的 id,我在下一个请求中使用它:(首先运行新的微服务)
java -jar parsdescription-0.0.1-SNAPSHOT.jar
value=$(curl -d '{"explorerId":'$v2', "turnOff":true}' -H "Content-Type: application/json" -X POST http://localhost:8080/descriptions) >> /var/log/description3.log 2>&1
Run Code Online (Sandbox Code Playgroud)
因此,curl执行正常,数据库确实填充了一些数据,并且在值中我得到了正确的值。
但是,当我创建 crontab 计划时:
50 09 * * * java -jar /root/parser-0.0.1-SNAPSHOT.jar
51 09 * * * value=$(curl -d '{"query":"java-middle", "turnOff":true}' -H "Content-Type: application/json" -X POST http://localhost:8080/explorer)
52 …Run Code Online (Sandbox Code Playgroud)