Команда 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-скрипта вместе.
- Существующий сценарий, просто добавьте запись в файл, запишите его в формате CSV время начала и время окончания сценария. [Каждый пробег в новой строке]
- Каждые 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, чтобы уменьшить количество сбоев.