Когда скрипты запускаются по cron, часто мы не знаем - сработали ли они, что вывели, были ли ошибки. В результате важная задача могла "молча" упасть, и никто не заметил.
Решение - генерация и отправка ежедневного отчета о выполнении всех cron-задач с логами.
⭐️ Принцип:
📍 Все cron-скрипты логируют вывод в файл.
📍 В конце дня другой скрипт собирает и отправляет логи (по почте, в телегу, в файл).
📍 Старая логика - архивируется или удаляется.
🛠 Пример скрипта:
/usr/local/bin/cron-report.sh
#!/bin/bash
LOGDIR="/var/log/cron-jobs"
REPORT="/tmp/cron_report_$(date +%F).log"
echo "Отчет о задачах cron за $(date)" > "$REPORT"
echo "===============================" >> "$REPORT"
for logfile in "$LOGDIR"/*.log; do
echo -e "\n[$(basename "$logfile")]" >> "$REPORT"
tail -n 50 "$logfile" >> "$REPORT"
done
#Отправить отчет (почта или телега)
mail -s "Cron Report $(hostname)" admin@bashtex.com < "$REPORT"
#Удаление старых логов старше 7 дней
find "$LOGDIR" -name '*.log' -mtime +7 -delete
▪️ Пример cron-задания для скрипта:
0 23 * * * /usr/local/bin/cron-report.sh
▪️ Пример логирования в других скриптах. В каждом cron-скрипте указываем:
#!/bin/bash
# example_job.sh
LOG="/var/log/cron-jobs/example_job.log"
echo "==== $(date) ====" >> "$LOG"
your_command_here >> "$LOG" 2>&1
✅ Права доступа к логам ограничены: chmod 640, владелец - root или нужный юзер.
✅Логи очищаются через find или logrotate.
BashTex 📱 #bash