Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да обработвам нови файлове за обработка в cron задание

Добър начин за обработка/обработка на файлове, които се създават в произволно време, е да използвате incron вместо cron . (Забележка:тъй като incron използва inotify на ядрото на Linux syscalls, това решение работи само с Linux.)

Докато cron изпълнява задача въз основа на дати и часове, incron изпълнява задача въз основа на промени в наблюдавана директория. Например, можете да конфигурирате incron да изпълнява задание всеки път, когато се създава или променя нов файл.

В Ubuntu пакетът се нарича incron . Не съм сигурен за RedHat, но вярвам, че това е правилният пакет:http://rpmfind.net//linux/RPM/dag/redhat/el5/i386/incron-0.5.9-1.el5.rf. i386.html .

След като инсталирате пакета incron, прочетете

man 5 incrontab 

за информация как да настроите конфигурационния файл на incrontab. Вашият incron_config файл може да изглежда така:

/var/ss01/ IN_CLOSE_WRITE /path/to/processing/script.py $#
/var/ss02/ IN_CLOSE_WRITE /path/to/processing/script.py $#
/var/ss03/ IN_CLOSE_WRITE /path/to/processing/script.py $#
/var/ss04/ IN_CLOSE_WRITE /path/to/processing/script.py $#

След това, за да регистрирате тази конфигурация с демона incrond, трябва да стартирате

incrontab /path/to/incron_config

Това е всичко. Сега, когато се създаде файл в /var/ss01, /var/ss02, /var/ss03 или /var/ss04, командата

/path/to/processing/script.py $#

се стартира, като $# се заменя с името на новосъздадения файл.

Това ще премахне необходимостта от съхраняване/сравняване на хешове и файловете ще се обработват само веднъж - веднага след като бъдат създадени.

Просто се уверете, че вашият скрипт за обработка не записва в най-горното ниво на наблюдаваните директории. Ако го направи, тогава incrond ще забележи създадения нов файл и ще стартира отново script.py, изпращайки ви в безкраен цикъл.

incrond следи отделни директории и не следи рекурсивно поддиректории. Така че можете да насочите tshark да пише в /var/ss01/tobeprocessed, да използвате incron за наблюдение/var/ss01/tobeprocessed и да накарате вашия script.py да запише в /var/ss01, например.

PS Има и интерфейс на python за inotify, наречен pyinotify . За разлика от incron, pyinotify може рекурсивно да наблюдава поддиректории. Във вашия случай обаче не мисля, че функцията за рекурсивно наблюдение е полезна или необходима.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Най-добрата практика за съхраняване на парола за база данни

  2. Търся урок за това как да изградите система за лични съобщения с помощта на PHP

  3. MySQL групови резултати по ден, използвайки времеви печат

  4. Инсталирайте Mtop (MySQL Database Server Monitoring) в RHEL/CentOS 6/5/4, Fedora 17-12

  5. Базовата таблица за мигриране на Laravel 4 не е намерена