GNU/Linux >> Belajar Linux >  >> Linux

Menggunakan Inotify Untuk Memantau Akses Ke File?

Saya ingin memiliki pemicu dan ketika file tertentu diakses oleh beberapa proses, saya ingin diberi tahu (yaitu skrip harus dijalankan). Jika saya mengerti dengan benar, ini dapat dicapai dengan inotify .

Jika saya memiliki file /foo/bar.txt bagaimana cara mengatur inotify untuk memantau file itu?

Saya menggunakan Debian Wheezy dengan kernel 3.12 (kernel saya memiliki dukungan inotify)

Jawaban yang Diterima:

Menurut Gilles tentang Pengguna Super:

Sederhana, menggunakan inotifywait (instal inotify-tools distribusi Anda paket):

while inotifywait -e close_write myfile.py; do ./myfile.py; done

Ini memiliki batasan besar:jika beberapa program menggantikan myfile.py dengan file yang berbeda, daripada menulis ke myfile yang ada , inotifywait akan mati. Kebanyakan editor bekerja seperti itu.

Untuk mengatasi batasan ini, gunakan inotifywait pada direktori:

while true; do
  change=$(inotifywait -e close_write,moved_to,create .)
  change=${change#./ * }
  if [ "$change" = "myfile.py" ]; then ./myfile.py; fi
done

Linux
  1. Pemantauan Akses File Linux?

  2. Menggunakan Uniq Pada Teks Unicode?

  3. Mulai ulang proses perubahan file di Linux

  1. lokasi file sementara saat menggunakan tmpfile() di C

  2. Acara inotify tidak ada (dalam direktori .git)

  3. Terus mendeteksi file baru dengan alat inotify dalam banyak direktori secara rekursif

  1. Kelola startup menggunakan systemd

  2. Cara Mengaudit Akses File di Linux

  3. akses bersamaan ke file linux