我们尝试在以下shell脚本中运行java命令失败:
#!/bin/bash
/usr/java/jdk1.8.0_91/bin/java -jar /home/cyberren/cyberren/cyberexe/D50_1_Migration.jar > d50Migration.log
我们在cron文件中使用以下行调用它:
45 08 * * * /home/cyberren/queries/d50migration.sh
我们已确认shell脚本是通过cron运行的,但它不会执行java。它尝试,但我们的日志输出就是这一行:
2016-Jun-30 08:58:11 - D50_1_Migration Process v104
我们期待以下更多行:
2016-Jun-30 08:58:11 - D50_1_Migration Process v104
2016-Jun-30 08:58:11 - migrateData -> SQL: UPDATE D50_1 SET xassessment = 192, iStepsTotal = 9 WHERE xIndx = 128
2016-Jun-30 08:58:11 - migrateData -> SQL: UPDATE D50_1 SET xassessment = 192, iStepsTotal = 9 WHERE xIndx = 129
...
我们可以手动运行相同的shell脚本,并执行java。我们也可以手动执行java行,并且运行正确。
重复一遍:
提前感谢您的想法和建议。
更新/其他信息:
cd "$(dirname "$0")"
行。相同的输出。解决方案:
45 08 * * * /bin/bash -l -c "cd /home/cyberren/queries; ./d50migration.sh 2&>1 |tee -a /home/cyberren/d50migration.log"
这样你应该看到所有的输出和错误输出生成(如果有的话) - Finbarr O'Brien 22分钟前答案 0 :(得分:3)
尝试设置cron作业,以便从bash登录调用它并将STDERR输出发送到STDOUT并将其记录到文件中,这应该这样做:
45 08 * * * /bin/bash -l -c "cd /home/cyberren/queries; ./d50migration.sh 2>&1 |tee -a /home/cyberren/d50migration.log"
这样你就可以看到生成的所有输出和错误输出(如果有的话)