Cara mengatur dan memahami fs.notify.max_user_watches

13

Saya tidak mengerti cara terbaik untuk mengatur fs.inotify.max_user_watchesdengan sysctl. Sebenarnya, saya tidak mengerti banyak tentang apa yang terjadi di sini selain fakta bahwa saya perlu mengatur jumlah file yang dapat ditonton oleh proses tertentu.

Saya percaya bahwa saya dapat melihat jumlah maksimal pengguna dengan menjalankan perintah ini:

cat /proc/sys/fs/inotify/max_user_watches

Pemahaman saya adalah bahwa beberapa orang menyarankan perubahan /proc/sys/fs/inotify/max_user_watchesdengan membuka /etc/sysctl.confeditor dan menambahkan ini ke dalamnya:

fs.inotify.max_user_watches=524288

Kemudian jalankan sudo sysctl -puntuk - mungkin - memproses perubahan yang dilakukan pada file.

Yang lain menyarankan menjalankan perintah seperti ini:

sudo sysctl -w fs.inotify.max_user_instances=1024
sudo sysctl -w fs.inotify.max_user_watches=12288

Saya tahu itu -wsingkatan dari menulis, tetapi apa yang sedang ditulis dan di mana? Apakah hanya karena perintah ini berubah /proc/.../max_user_watches?

Manakah dari dua pendekatan yang diuraikan di atas yang terbaik? Saya mengerti bahwa 524288 dan 12288 adalah angka yang berbeda, tetapi saya tidak mengerti perbedaan antara efek berlari -pdan -w.

ccalvert
sumber

Jawaban:

10

sysctl -wmenulis nilai parameter kernel ke kunci yang sesuai di bawah /proc/sys:

sudo sysctl -w fs.inotify.max_user_watches=12288

menulis 12288untuk /proc/sys/fs/inotify/max_user_watches. (Ini tidak setara, persis seperti itu; pembaca yang tertarik dapat stracemelihatnya sendiri.)

sysctl -p

memuat pengaturan dari file, baik /etc/sysctl.conf(default), atau file apa pun yang ditentukan setelah -p.

Perbedaan antara kedua pendekatan, di luar sumber yang berbeda dari parameter dan nilai yang mereka tulis, adalah bahwa -whanya mengubah parameter sampai reboot berikutnya, sedangkan nilai yang disimpan /etc/sysctl.confakan diterapkan lagi setiap kali sistem boot. Pendekatan saya yang biasa adalah menggunakan -wuntuk menguji nilai-nilai, maka setelah saya yakin pengaturan baru OK, tulis ke /etc/sysctl.confatau file di bawah /etc/sysctl.d(biasanya /etc/sysctl.d/local.conf).

Lihat halaman manual sysctldan sysctl.conf( man sysctldan man sysctl.confpada sistem Anda) untuk detailnya.

Stephen Kitt
sumber