Можно ли запланировать запуск сценария Python в конце logrotate?

Я использую Piwik Analytics на сайте, на котором нет никакого javascript, и я бы предпочел, чтобы данные создавались из журналов доступа, а не из трекера изображений - результаты из журналов на самом деле лучше, поскольку они могут включать в себя статические загрузки файлов.

Это сервер LEMP с Ubuntu 12.04 и nginx 1.4.5.

Скрипт Python находится по адресу /var/www/example1.com/public/piwik/misc/log-analytics/import-logs.py и нужно будет запустить с несколькими вариантами. Журнал доступа находится по адресу /var/www/example2.com/logs/access.log.1,

Соответствующая часть /etc/logrotate.d/nginx содержит:

/var/www/*/logs/*.log {
   daily
   missingok
   rotate 36500
   compress
   delaycompress
   notifempty
   create 0640 www-data adm
   sharedscripts
   prerotate
       if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
           run-parts /etc/logrotate.d/httpd-prerotate; \
       fi; \
   endscript
   postrotate
                [ -s /run/nginx.pid ] && kill -USR1 `cat /run/nginx.pid`
        endscript
}

Я не знаю, как интегрировать скрипт Python так, чтобы он выполнялся в конце этого (после завершения поворотов).

Редактировать:

Еще одна проблема, которую я изначально не рассматривал, заключается в том, что этот сценарий нужно запускать только для одного домена - остальные домены на сервере не требуют сценария. Файл выше я создал так, что он будет автоматически вращать журналы для всех доменов, добавленных на сервер, без необходимости редактирования /etc/logrotate.d/nginx,

1 ответ

Решение

Вы можете поместить команду, которую хотите выполнить, между postrotate а также endscript линии (убедитесь, что линия уже есть):

   postrotate
      [ -s /run/nginx.pid ] && kill -USR1 `cat /run/nginx.pid`
      /usr/bin/python /var/www/example1.com/public/piwik/misc/log-analytics/import-logs.py somearguments
   endscript
Другие вопросы по тегам