Bagaimana cara kerjanya?

14

Menurut Wikipedia ,

inotify adalah subsistem kernel Linux yang memperhatikan perubahan pada sistem file. Itu menggantikan dnotify sebelumnya.

Program yang menyinkronkan file (seperti crashplan, dropbox, git) merekomendasikan dalam panduan pengguna bahwa pengguna meningkat max_user_watches( 1 , 2 , 3 ).

Dari apa yang saya pahami tentang inotify, OS "diberitahu" bahwa file telah diubah, daripada meminta OS untuk "pergi mencari" untuk perubahan.

Saya berasumsi bahwa ada file "inotify" yang dibuat di setiap direktori. Apakah ini benar? Apakah ada cara untuk berinteraksi dengan inotify dari baris perintah?

Sumber Daya
Mengapa peristiwa yang tidak diberitahukan berbeda pada pemasangan NFS?
Tidak menunggu untuk banyak file dalam direktori

spuder
sumber
Anda mungkin tidak akan menemukan jawaban atas pertanyaan Anda dengan cara ini (setidaknya, tidak mudah) tetapi Anda harus menjalankannya grep --exclude=arch -r inotifydi sumber kernel Linux.

Jawaban:

21

Inotify adalah fasilitas kernel internal. Tidak ada "file inotify". Ada panggilan sistem khusus inotify_init, inotify_add_watchdan inotify_rm_watchyang memungkinkan proses untuk mendaftarkan diri untuk diberi tahu ketika peristiwa sistem file tertentu terjadi. Ketika acara tersebut terjadi, proses menerima deskripsi acara melalui deskriptor file yang dikembalikan oleh inotify_init.

OS tidak "diberitahu" bahwa suatu file telah diubah: ia tahu, karena ia melakukan perubahan. Ini adalah aplikasi yang memberi tahu bahwa file telah diubah alih-alih harus mencari.

Program ini inotifywaitmenyediakan cara sederhana untuk menggunakan inotify dari baris perintah.

Gilles 'SANGAT berhenti menjadi jahat'
sumber