Статьи

Обновление отчёта по логам через cron

Обновлено 14.10.2026

Ручная проверка команды, настройка расписания и проверка автоматического запуска.

Добавим расписание для Lua-парсера: сначала каждую минуту для проверки, затем раз в десять минут.

К этому моменту должны существовать /root/bin/log-summary.lua и /var/log/tutorial-access.log. Доступ с хоста настроен в уроке SSH.

Проверьте команду и время

В гостевой консоли:

/bin/lua /root/bin/log-summary.lua /var/log/tutorial-access.log /var/log/access-summary.txt
cat /var/log/access-summary.txt
date
service status cron

Ожидается отчёт с пятью запросами и состояние cron running. Если парсер завершился ошибкой, исправьте её до настройки расписания. cron использует системное время.

Добавьте задание

Сохраните копию существующего файла и откройте его:

cp /etc/crontab /etc/crontab.before-log-summary
nano /etc/crontab

Оставьте штатные задания и добавьте отдельную строку:

* * * * * /bin/lua /root/bin/log-summary.lua /var/log/tutorial-access.log /var/log/access-summary.txt

Пять полей означают минуты, часы, день месяца, месяц и день недели. В SynapseOS поле пользователя не добавляется: задания выполняются от root. * в каждом поле запускает команду каждую минуту.

Сохраните файл в nano: Ctrl+O, Enter, затем Ctrl+X. Примените изменения:

service restart cron
service status cron

cron также перечитывает изменённый файл раз в минуту. Не запускайте второй экземпляр /bin/cron вручную рядом со службой.

Проверьте работу расписания

Посмотрите время Generated в отчёте. После следующей границы минуты проверьте:

cat /var/log/access-summary.txt
cat /var/log/cron.log

Время отчёта должно измениться, а в журнале cron - появиться запуск команды и сообщение Saved: /var/log/access-summary.txt.

Для проверки данных добавьте на Linux-хосте в учебный файл строку:

10.0.2.2 - - [12/Oct/2026:12:01:00 +0000] "GET /cron-test HTTP/1.1" 200 10

Повторно передайте файл через SFTP в /var/log/tutorial-access.log. Не запускайте парсер вручную: дождитесь следующей минуты. В новом отчёте будут Requests: 6, Response bytes: 410 и 200: 4.

Оставьте интервал десять минут

После успешной проверки замените строку задания:

*/10 * * * * /bin/lua /root/bin/log-summary.lua /var/log/tutorial-access.log /var/log/access-summary.txt

*/10 означает минуты 0, 10, 20, 30, 40, 50, а не десять минут от момента сохранения. Для запуска ежедневно в 03:15 строка будет такой:

15 3 * * * /bin/lua /root/bin/log-summary.lua /var/log/tutorial-access.log /var/log/access-summary.txt

Выберите одну строку, а не все три. Примените её через service restart cron. Пока задание включено, не запускайте вручную второй парсер с тем же выходным файлом.

Если отчёт не обновляется

Проверьте состояние службы, время системы, содержимое /etc/crontab, полные пути и журнал /var/log/cron.log. При Cannot read нужен существующий входной файл; при Cannot write - доступный каталог отчёта. Если предыдущее выполнение ещё работает, реализация cron из sbase пропускает повтор той же команды.

Чтобы отключить урок, удалите его строку или добавьте # в начало и перезапустите cron. Не заменяйте всё расписание старой копией, если с тех пор добавили другие задания.