运行java程序的cronjob

运行java程序的cronjob,java,cron,Java,Cron,我正在尝试使用cronjob运行一个java程序,假设它是HelloWorld示例。 当我执行哪个java时,我得到以下路径/opt/java/bin/java,当我尝试在cronjob中运行程序时,它没有运行,我认为cronjob看不到java的绝对路径,因为当我执行以下操作时: * * * * * /opt/java/bin/java -help > /absolute/path/to/file.txt 或以下 * * * * * /opt/java/bin/java HelloWo

我正在尝试使用cronjob运行一个java程序,假设它是
HelloWorld
示例。 当我执行
哪个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。

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


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

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