【问题标题】:cronjob to run java programcronjob 运行 java 程序
【发布时间】:2020-01-12 22:53:07
【问题描述】:

我正在尝试使用 cronjob 运行 java 程序,假设它是 HelloWorld 示例。 当我执行which java 时,我得到以下路径/opt/java/bin/java 并且当我尝试在cronjob 中运行程序时它没有运行,我认为cronjob 看不到java 的绝对路径,因为当我执行以下操作时:

* * * * * /opt/java/bin/java -help > /absolute/path/to/file.txt

或以下

* * * * * /opt/java/bin/java HelloWorld > /absolute/path/to/file.txt

结果我得到一个空文件。 cronjob 运行是因为我创建了 file.txt,而 java 也可以运行,因为我可以使用 java 的绝对路径手动运行我的 HelloWorld。

【问题讨论】:

  • 也使用2>&1 管理标准错误。如果邮件正常工作,您应该收到一封带有输出的邮件。
  • 谢谢,这很有帮助,我现在可以在我的文件中显示错误消息,我可以看到java -help 的输出,所以cron作业实际上可以看到java的绝对路径,我看到了我的程序中有例外:P
  • @ThorbjørnRavnAndersen:如果您将评论转换为答案,将会对其他人有所帮助。
  • @RodwanBakkar 欢迎来到编写生产强化代码的美妙世界????

标签: java cron


【解决方案1】:

首先,cronjob 的输出通常会邮寄给运行 cronjob 的用户。因此,如果您的邮件系统配置正确(您可以运行date | mail $(whoami) 然后阅读该邮件),您应该会看到程序在运行时打印的内容。如果程序创建任何输出,则发送该邮件。如果没有创建输出,则不会发送邮件。

还要注意program > out.log 只重定向标准输出。如果您不希望邮件中继续出现标准错误,您可以使用program 2> err.log 将其重定向。如果您希望两者都进入同一个输出文件,请使用program > out.log 2>&1。所有这些都是标准的 Unix,因此您可以使用任何关于 Linux 的系统管理书籍来了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多