Обновление отчёта по логам через 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. Не заменяйте всё расписание старой копией, если с тех пор добавили другие задания.