Cómo configurar y comprender fs.notify.max_user_watches

13

No entiendo la mejor manera de establecer fs.inotify.max_user_watchescon sysctl. De hecho, no entiendo mucho de lo que está sucediendo aquí, aparte del hecho de que necesito establecer la cantidad de archivos que puede ver un proceso en particular.

Creo que puedo ver el número máximo de usuarios ejecutando este comando:

cat /proc/sys/fs/inotify/max_user_watches

Tengo entendido que algunas personas sugieren cambiar /proc/sys/fs/inotify/max_user_watchesabriendo /etc/sysctl.confen un editor y agregando esto:

fs.inotify.max_user_watches=524288

Luego, ejecute sudo sysctl -ppara, presumiblemente, procesar los cambios realizados en el archivo.

Otros sugieren ejecutar comandos como este:

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

Sé que -wsignifica escribir, pero ¿qué se escribe y dónde? ¿Es solo que este comando cambia /proc/.../max_user_watches?

¿Cuál de los dos enfoques descritos anteriormente es el mejor? Entiendo que 524288 y 12288 son números diferentes, pero no entiendo la diferencia entre el efecto de correr -py -w.

ccalvert
fuente

Respuestas:

10

sysctl -wescribe los valores de los parámetros del kernel en las claves correspondientes en /proc/sys:

sudo sysctl -w fs.inotify.max_user_watches=12288

escribe 12288a /proc/sys/fs/inotify/max_user_watches. (No es equivalente, es exactamente eso; los lectores interesados ​​pueden straceverlo por sí mismos).

sysctl -p

carga la configuración de un archivo, /etc/sysctl.conf(el valor predeterminado) o cualquier archivo que se especifique después -p.

La diferencia entre ambos enfoques, más allá de las diferentes fuentes de los parámetros y valores que escriben, es que -wsolo cambia los parámetros hasta el próximo reinicio, mientras que los valores almacenados /etc/sysctl.confse aplicarán nuevamente cada vez que se inicie el sistema. Mi enfoque habitual es usar -wpara probar valores, luego, una vez que estoy seguro de que las nuevas configuraciones están bien, escríbalas en /etc/sysctl.confun archivo /etc/sysctl.d(generalmente /etc/sysctl.d/local.conf).

Consulte las páginas del manual sysctly sysctl.conf( man sysctly man sysctl.confen su sistema) para más detalles.

Stephen Kitt
fuente