sql >> Databáze >  >> RDS >> Mysql

Jak zacházet s novými soubory ke zpracování v úloze cron

Dobrým způsobem, jak zpracovat/zpracovat soubory, které jsou vytvořeny v náhodných časech, je použítincron spíše než cron . (Poznámka:protože incron používá linuxové jádroinotify syscalls, toto řešení funguje pouze s Linuxem.)

Zatímco cron spustí úlohu založenou na datech a časech, incron spustí úlohu založenou na změnách v monitorovaném adresáři. Můžete například nakonfigurovat incron tak, aby spustil úlohu pokaždé, když je vytvořen nebo upraven nový soubor.

Na Ubuntu se balíček nazývá incron . Nejsem si jistý RedHat, ale věřím, že toto je ten správný balíček:http://rpmfind.net//linux/RPM/dag/redhat/el5/i386/incron-0.5.9-1.el5.rf. i386.html .

Po instalaci balíčku incron si přečtěte

man 5 incrontab 

informace o tom, jak nastavit konfigurační soubor incrontab. Váš incron_config soubor může vypadat nějak takto:

/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 $#

Poté, abyste tuto konfiguraci zaregistrovali pomocí démona incrond, spustili byste

incrontab /path/to/incron_config

To je všechno. Nyní, kdykoli je vytvořen soubor v /var/ss01, /var/ss02, /var/ss03 nebo /var/ss04, příkaz

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

se spustí, přičemž $# bude nahrazeno názvem nově vytvořeného souboru.

Tím se vyhnete nutnosti ukládat/porovnávat hashe a soubory budou zpracovány pouze jednou – ihned po jejich vytvoření.

Jen se ujistěte, že váš skript pro zpracování nezapisuje do nejvyšší úrovně sledovaných adresářů. Pokud ano, incrond si všimne vytvořeného nového souboru a znovu spustí script.py, čímž vás pošle do nekonečné smyčky.

incrond monitoruje jednotlivé adresáře a nesleduje rekurzivně podadresáře. Můžete tedy nařídit tshark, aby zapisoval do /var/ss01/tobeprocessed, použít incron k monitorování/var/ss01/tobeprocessed a nechat svůj script.py zapisovat například do /var/ss01.

PS. Existuje také rozhraní pythonu pro inotifikaci, nazvané pyinotify . Na rozdíl od incronu může pyinotify rekurzivně sledovat podadresáře. Ve vašem případě si však nemyslím, že funkce rekurzivního sledování je užitečná nebo nezbytná.



  1. Import souboru .csv do aplikace Oracle Forms

  2. Cena za nečištění

  3. Vytvoření studeného pohotovostního režimu pro PostgreSQL pomocí Amazon AWS

  4. MySql:Inicializujte proměnnou mySql uvnitř dotazu