Команда crontab - выполнить и чем файл журнала электронной почты (с 2 вариантами)

Мне нужно запускать свой 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

если вы думаете, что я должен сделать это по-другому, пожалуйста, объясните и покажите мне, как. Кстати - я работаю с постфиксом.

2 ответа

Решение

Хорошо, вот что я сделал, чтобы решить мою проблему:

Первое. Обязательно напишите все свои скрипты оболочки для Linux (иначе ваш скрипт испортится и вы даже не сможете его увидеть), вы можете установить свой собственный Linux с помощью vmware или другой программы.

Это мой скрипт:

`#!/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, который будет задавать вам этот скрипт и отправлять вам уведомления на ваш адрес электронной почты:)

Я надеюсь, что это поможет любому!

Хорошо, вы можете решить вашу проблему, написав / запустив два PHP-скрипта вместе.

  1. Существующий сценарий, просто добавьте запись в файл, запишите его в формате CSV время начала и время окончания сценария. [Каждый пробег в новой строке]
  2. Каждые x минут запускайте другой PHP-сценарий "deamon" через crontab, который анализирует файл CSV. Цели сценария: анализ файла CSV и поиск строк с временем начала и без конца и отправка электронного письма, если что-то не так в файле CSV.

Обратите внимание, что последняя строка в CSV-файле может быть активным процессом, поэтому возьмите интервал или время, которое, по вашему мнению, должно быть выполнено.

//Create another PHP file / class that sends an email and control it from the php code.

// the message
$msg = "First line of text\nSecond line of text";

// send email
mail("someone@example.com","My subject",$msg);

Что может прервать PHP в вашем коде? используйте механизм timeouts / try catch / reties, чтобы уменьшить количество сбоев.

Другие вопросы по тегам