Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana menangani file baru untuk diproses di cron job

Cara yang baik untuk menangani/memproses file yang dibuat secara acak adalah dengan menggunakanincron daripada cron . (Catatan:karena incron menggunakannotify kernel Linux syscalls, solusi ini hanya bekerja dengan Linux.)

Sedangkan cron menjalankan pekerjaan berdasarkan tanggal dan waktu, incron menjalankan pekerjaan berdasarkan perubahan dalam direktori yang dipantau. Misalnya, Anda dapat mengonfigurasi incron untuk menjalankan tugas setiap kali file baru dibuat atau diubah.

Di Ubuntu, paket tersebut disebut incron . Saya tidak yakin tentang RedHat, tapi saya yakin ini adalah paket yang tepat:http://rpmfind.net//linux/RPM/dag/redhat/el5/i386/incron-0.5.9-1.el5.rf. i386.html .

Setelah Anda menginstal paket incron, baca

man 5 incrontab 

untuk informasi tentang cara mengatur file konfigurasi incrontab. incron_config Anda file mungkin terlihat seperti ini:

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

Kemudian untuk mendaftarkan konfigurasi ini dengan daemon incrond, Anda akan menjalankan

incrontab /path/to/incron_config

Itu saja. Sekarang setiap kali file dibuat di /var/ss01, /var/ss02, /var/ss03 atau /var/ss04, perintahnya

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

dijalankan, dengan $# diganti dengan nama file yang baru dibuat.

Ini akan meniadakan kebutuhan untuk menyimpan/membandingkan hash, dan file hanya akan diproses sekali -- segera setelah dibuat.

Pastikan skrip pemrosesan Anda tidak menulis ke tingkat atas direktori yang dipantau. Jika ya, maka incrond akan melihat file baru yang dibuat, dan meluncurkan script.py lagi, mengirim Anda ke infinite loop.

incrond memonitor direktori individu, dan tidak memantau subdirektori secara rekursif. Jadi, Anda dapat mengarahkan tshark untuk menulis ke /var/ss01/tobeprocessed, menggunakan incron untuk memantau/var/ss01/tobeprocessed, dan meminta script.py Anda menulis ke /var/ss01, misalnya.

PS. Ada juga antarmuka python untuk dinotifikasi, disebut pyinotify . Tidak seperti incron, pyinotify dapat memantau subdirektori secara rekursif. Namun, dalam kasus Anda, menurut saya fitur pemantauan rekursif tidak berguna atau diperlukan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. UPDATE Baris yang Sama Setelah UPDATE di Trigger

  2. Tampilkan Tabel di Database SQLite dengan Python

  3. PHP memasukkan beberapa kotak centang DAN array kotak teks ke dalam Database MySQL

  4. mysql mengubah kunci unik menjadi primer (mariadb)

  5. Grup MySQL dengan interval 24 jam tertentu