Kabuk betiği dosyanın değiştirilmesini ve harekete geçmesini bekleyebilir mi?


12

Bir dosyadaki değişikliği izleyecek ve değişiklik algılandığında bazı eylemleri yürütecek bir komut dosyası yazıp yazamayacağımı merak ediyorum.

Detaylı açıklama:

  1. OpenVPN durumunu her 1 dakikada bir dosyaya yazar.
  2. Bu durum dosyasını ayrıştırıp harekete geçmem gerekiyor.
  3. OpenVPN durum dosyasına yazmadan önce keser.
  4. Adlandırılmış bir boruya yazmayı denedim, ancak boruyu kesemediğinde uygulamada istenmeyen (ancak ölümcül değil) hatalar alıyorum.

Değişikliğin aslında dosyaya eklenmesi durumunda , asmak tail -fmuhtemelen en kolay yoldur. Ama sadece eklemek için.
SF.

Yanıtlar:


21

N 'kirli yolu Price:

stat -c %Y fileDeğiştirme zamanı değiştiğinde döngü yapın ve harekete geçin.

Muhtemelen daha iyi:

Dosya değiştirme olaylarını izlemek ve eyleminizi çalıştırmak için inotify cron hizmetini kullanın:

/path/to/your/file IN_MODIFY /path/to/your/script $#

İkinci çözüm için +1
Michael Lowman


2

inotify bunu yapmanın doğru yolu olacaktır. Bu soru için bazı LinuxForYou dergi sürümünde öğreticiler verilmiştir.


0

Yani bir komut dosyası var:

1) Dosyadaki değişiklik süresini kontrol eder (stat ile)
2) Değişiklik süresi son kontrol edilenden daha
yeniyse , değişti 3) Ayrıştırın ve işleminizi gerçekleştirin
4) 1 dakika boyunca başka bir uyku ve ardından yeniden döngü yapın


0

Hızlı ve kirli yolu:

function wait_file_changed {
    tail -fn0 "$1" | head -n1
}

wait_file_changed /tmp/potato
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.