我编写了一个 simpleWorld Java 程序并创建了它的 jar 文件。
现在要测试 cron 作业,请编写一个 crontab.txt 文件,其中包含以下行
50 12 27 4 1 java -jar HelloWorld.jar
并保存了它。
在 unix 机器上的命令提示符处,我写道:
crontab crontab.txt
我在 unix 机器上看不到该程序的结果。如何获得 SysOut 行“Hello World”。
换句话说,我怎么知道它是否运行成功?
答案1
最好的(“正确的”)方法是修改 crontab 中的命令,以便它重定向其输出;例如,
50 12 27 4 1 java -jar HelloWorld.jar >> HelloWorld.output 2>&1
但是,通常,当 cron 作业产生未重定向的输出时,
cron
会捕获它并将其邮寄给您。尝试输入mail
并看看您会得到什么。 (如果您的计算机上有其他邮件系统,当然可以使用它。)
答案2
如果 cron 作业产生任何输出,cron 会将其通过本地电子邮件设施发送给您。如果 cron 作业返回非零(即错误)状态,cron 会向您发送一封有关该情况的电子邮件。没有可靠的方法来检查 cron 作业是否已完成但没有输出且状态为零(即成功),或者它仍在运行。
某些发行版在默认安装中没有设置本地电子邮件设施。通常很容易做到这一点:只需安装其中一个MTAPostfix 或 Exim 等软件包;当询问如何配置时,选择“仅本地交付”或类似选项。如果您希望通过 SMTP 将电子邮件发送到远程服务器而不是在本地传送,为此有最少的 MTA。
除了电子邮件之外,您还可以通过在命令行上使用重定向将作业的输出安排到文件中。
50 12 27 4 1 java -jar HelloWorld.jar >~/log/HelloWorld-$(date -d \%Y\%m\%d-\%H\%M\%S).log 2>&1