gpt4 book ai didi

java - 简单的 Java 命令不在 Cron 中运行

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:38:09 24 4
gpt4 key购买 nike

我们尝试在以下 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.lang.它尝试了,但我们的日志输出只有这一行:

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.lang.我们也可以手动执行 java 行,并且它运行正确。

所以再重复一遍:

  • cron 作业按计划运行
  • shell脚本运行
  • 日志已创建,但仅包含初始行
  • shell脚本中的java行没有运行
  • shell脚本和独立java行都手动运行成功
  • 我们已确认引用的所有目录

提前感谢您的想法和建议。

更新/附加信息:

  • (编辑)权限正确
  • (编辑)尝试根据 Alex 的建议添加前面的 cd "$(dirname "$0")" 行。相同的输出。

解决方案:

  • @Jackson,您可能无法访问 jar 文件的源代码,因此调试将毫无结果。尝试设置 cron 作业,以便从 bash 登录调用它并将 STDERR 输出发送到 STDOUT 并将两者记录在一个文件中,这应该做到,45 08 * * */bin/bash -l -c "cd/home/cyberren/queries; ./d50migration.sh 2&>1 |tee -a/home/cyberren/d50migration.log" 这样你应该可以看到所有输出和生成的错误输出(如果有的话) – Finbarr O'Brien 22 分钟前
  • 起初我们很高兴有办法查看我们的错误,但是您的 cron 行成功运行了 .jar!您已经解决了我们的问题,并为我们提供了一种通过 cron 成功安排和运行 java 存档文件的方法。

最佳答案

尝试设置 cron 作业,以便从 bash 登录调用它并将 STDERR 输出发送到 STDOUT 并将两者记录在一个文件中,应该这样做:

45 08 * * * /bin/bash -l -c "cd /home/cyberren/queries; ./d50migration.sh 2>&1 |tee -a /home/cyberren/d50migration.log" 

这样您应该可以看到所有输出和生成的错误输出(如果有的话)

关于java - 简单的 Java 命令不在 Cron 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38146248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com