crontab命令 - 执行和比电子邮件日志文件(有2个选项)

时间:2017-03-22 17:53:43

标签: php email cron crontab cron-task

我需要每小时运行一下我的php代码,而且我对crontab / cronjob的了解非常糟糕。 我希望脚本每小时运行并发送2个案例的电子邮件:成功和失败。 我写了这段代码,但我不知道它对crontab是否有用(我认为它不起作用):

0 * * * * php <full-path-script>
if [ “$?” = “0” ]; then
echo “Backup Process was Successful. A new log file <filename>.txt has been
created” | mail -s “Backup Status Successful” <email> -A <path>
<filename>.txt
else
echo “Backup Process Failed. Please contact System Administrator.  A new log
file <filename>.txt has been created” | mail -s “Backup Status Failed” 
<email> -A <path><filename>.txt

如果你认为我应该做的不同,请解释并告诉我如何。 顺便说一句 - 我正在使用postfix。

2 个答案:

答案 0 :(得分:0)

好的,您可以一起编写/运行两个PHP脚本来解决您的问题。

  1. 现有脚本,只需添加写入文件,以CSV格式写入脚本的开始时间和结束时间。 [每次在新行中运行]
  2. 每隔x分钟通过解析CSV文件的crontab运行另一个“deamon”PHP脚本,脚本目标是:解析CSV文件并搜索具有开始时间和没有结束时间的行,如果出现错误则发送电子邮件CSV文件。
  3. 请注意,CSV文件中的最后一行可以是活动进程,因此请考虑您认为应该进行的间隔或时间。

    crtl+F

    您的代码中可以在PHP中断什么?使用超时/尝试catch / reties机制来减少失败。

答案 1 :(得分:0)

好的,这就是我为解决问题所做的工作:

首先 - 确保在Linux上编写所有shell脚本(否则你的脚本会搞砸,你甚至无法看到它),你可以使用vmware或其他程序设置自己的Linux。

这是我的shell脚本:

`#!/bin/bash
/usr/bin/php <full-path-script>

if [ “$?” = “0” ]
then

echo “Backup Process was Successful. A new log file `date "+\%Y-\%m-\%d-
\%H"`.txt has been created” | mail -s “Backup Status Successful” <email-
address> -a <path>`date "+\%Y-\%m-\%d-\%H"`.txt

else

echo “Backup Process Failed. Please contact System Administrator” | mail -s
“Backup Status Failed” <email-address> -a <path>`date "+\%Y-\%m-\%d-\%H"`.txt

fi`

为了确保您的脚本会将错误发送到$?你应该避免使用die();关于错误,实际上你应该使用exit(1); (它会在$中加1?所以我们知道脚本无法运行)。

不要忘记制作cronjob,为您完成此脚本的任务,并将通知发送到您的电子邮件地址:)

我希望这对任何人都有帮助!