2015-12-30 3 views
5

Я хочу запускать cronjob каждую минуту, чтобы обнаружить все файлы, которые были изменены в последнюю минуту в определенном каталоге (около 300 000 inodes) и экспортировать этот список файлов в csv.Cronjob для обнаружения последних измененных файлов

Возможно ли выполнить оптимизированную команду для этого? Я не могу запустить «найти» с флажком сортировки в этом каталоге, потому что он огромен, и, вероятно, потребуется больше 1 минуты для запуска всех файлов.

Есть ли какая-нибудь команда, которую я могу сделать? Или запустить какую-либо специальную программу на фоне сервера, который регистрирует каждый измененный файл по мере его изменения? Если для этого есть команда, использующая PHP, я в порядке, я могу создать cron для выполнения скрипта PHP, без проблем.

+0

Если find не работает, возможно, IO является узким местом, поэтому это не имеет значения, если вы используете «find» или какой-либо другой метод для определения времени mtime файлов. Сосредоточьтесь на методе улучшения вашего ввода-вывода. – Ctx

+0

Что пишут файлы? Можно ли это сделать? – Martin

+1

Используйте 'incrontab'. Он работает как обычный 'crontab', за исключением событий файла (например, изменение): http://manpages.ubuntu.com/manpages/intrepid/man5/incrontab.5.html –

ответ

2

Существует утилита Linux, называемая incron, которая может быть использована аналогично обычным cron, но вместо того, чтобы события основаны на времени, они отключаются от inotify и увольняются из событий файла.

Вы можете найти на странице руководства Ubuntu здесь: http://manpages.ubuntu.com/manpages/intrepid/man5/incrontab.5.html

лично я не должен был использовать его для чего-нибудь слишком сложной, но это примерно выглядит следующим образом:

Установите его:

sudo apt-get install incron 

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

incrontab -e 

Поместите что-то вроде этого:

/var/www/myfolder IN_MODIFY curl https://www.example.com/api/file-updated/$# 

Первая часть является файлом или папкой для просмотра. Вторая часть - это событие. И третья часть - это команда.

I думаю что $# является заполнителем для данного файла.

+0

Вы здорово! :) – Samul

+0

Хех, рад, что смогу помочь :-) –

+0

Это действительно интересно. Спасибо. –

Смежные вопросы