Bir dizine bir tetikleyici nasıl koymak


25

Bir dizini tarayan ve içindeki dosyalar üzerinde bakım yapan bir betiğim var. Diğer bir işlem ise dizindeki dosyaları yaratır (günde 10 - 30 dosya).

Senaryo günlük cron işi aracılığıyla çağrılır. İhtiyacım olan, senaryoyu bir etkinlikte tetiklemektir (her seferinde dizinde yeni bir dosya oluşturulur). Bunu cron işinin sıklığını arttırmak yerine tercih ederim.

Bunu nasıl yapabilirim? yüklenecek bir komut veya program var mı?

Herhangi bir yardım için şimdiden teşekkür ederiz.

Yanıtlar:


23

inoticoming

oturum açma, Linux'un inotify çerçevesi olan bir dizini izlemek ve belirli adlara sahip dosyalar buraya yerleştirildikten sonra eylemleri tetiklemek için bir servistir.

Örneğin, bir dizine yüklenen .changes dosyalarını beklemek ve onları depoya koymak için reprepro'yu çağırmak için kullanılabilir.

incron

incron bir "inotify cron" sistemidir. Düzenli cron gibi çalışır, ancak zaman olayları yerine dosya sistemi olayları tarafından çalıştırılır. Bu paket iki program, "incrond" (crond'a benzer) adı verilen bir arka plan programı ve "incrontab" ("crontab" gibi) bir tablo işleyicisi sunar.

incron Linux çekirdeğini inotify sistem çağrılarını kullanır.

cron gibi, her kullanıcı kendi incron tablolarını düzenleyebilir.


2
Bir örnek verebilir misiniz? Manuel sayfaların bağlantıları I için bir bulamadık, çok hoş geldiniz incron, inoticomingbiri burada .
Lekensteyn

İncron için incrond, incrontab ve incron.conf man sayfalarına bakın
Florian Diesch

2
Cevabınızı görmek istediğim şekilde düzenledim. Paketleri açıklamalarından kopyaladım, lütfen programları isimlendirirken ileride çok kapsamlı
olalım

4

Ayrıca adlandırılan küçük bir program var iwatch- man sayfasına bakın (bu sayfa kesin olarak Ubuntu içindir (12.04), diğer ubuntu sürümlerine bağlantıları vardır).

iwatch Klasörleri yinelemeli olarak izleme özelliğine sahiptir (örn: alt klasörler de) ve dosya / dizin olaylarına cevap olarak e-posta gönderebilir.


3

Bilinmesi gereken başka bir yardımcı program ise fileschanged( buradaki man sayfası ), seçilen dosya veya dizinlerde dosya sistemi olayını izleyebilir, örneğin aşağıdaki komut

fileschanged -s created -t1 $PWD

dosya oluşturma olayları için geçerli dizini izlemeli, oluşturulan dosyanın adını stdoutbir 1sn zaman aşımı ile yazmalıdır.

fileschanged(kutu olarak yinelemeli klasörleri izleyebilirsiniz iwatchbaşka bir yanıt belirtildiği gibi), aksine incronve inoticoming.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.