Saya ingin tahu apakah saya dapat menulis skrip yang akan memonitor perubahan dalam file dan melakukan beberapa tindakan ketika perubahan terdeteksi.
Penjelasan detail:
- OpenVPN menulis statusnya ke file setiap 1 menit.
- Saya perlu mengurai file status ini dan mengambil tindakan.
- OpenVPN memotong file status sebelum menulis ke sana.
- Saya mencoba menulis ke pipa bernama, tetapi saya mendapatkan kesalahan yang tidak diinginkan (tapi tidak fatal) di aplikasi ketika gagal memotong pipa.
linux
bash
openvpn
shell-scripting
davidparks21
sumber
sumber
tail -f
mungkin adalah cara termudah. Tetapi hanya untuk menambahkan.Jawaban:
Murah dan kotor cara:
Ulangi
stat -c %Y file
dan ambil tindakan saat waktu modifikasi berubah.Mungkin lebih baik:
Gunakan layanan cron inotify untuk menonton acara modifikasi file dan menjalankan tindakan Anda:
sumber
Lihatlah incron [1] atau hal-hal yang tidak disarankan lainnya untuk memicu eksekusi skrip Anda.
[1] http://inotify.aiken.cz/?section=incron&page=about&lang=en
sumber
inotify akan menjadi cara yang tepat untuk melakukannya. Tutorial diberikan dalam beberapa edisi majalah LinuxForYou untuk pertanyaan ini.
sumber
Jadi punya skrip yang:
1) Memeriksa waktu modifikasi pada file (dengan stat)
2) Jika waktu modifikasi lebih baru daripada saat terakhir diperiksa, itu telah berubah
3) Mengurai dan melakukan tindakan Anda
4) Lain tidur selama 1 menit dan kemudian kembali
sumber
Cara cepat dan kotor:
sumber