Inotify me regarde
Faible capacité pour les instances Inotify
Système et matériels / Administration système

Roland57 Membre non connecté
-
- Voir le profil du membre Roland57
- Inscrit le : 08/02/2020
- Site internet
- Groupes :
Je reçois des notifications m'informant d'une « faible capacité pour les instances Inotify ».

Qu'est-ce que c'est ? Que dois-je faire ?

nic80 Membre non connecté
-
- Voir le profil du membre nic80
- Inscrit le : 06/08/2018
- Groupes :
-
Modérateur
J' ai eu la même récemment mais je n' ai pas creusé plus que ça.
Visiblement, il y a un suivi de modifications du systéme de fichier (inotify est au courant de ces modfications et les applications peucent ainsi savoir si un fichier qui les interesse a été modifié.
Sauf que je n' ai trouvé comment on sait quelles applications écoutent les notifications d' inotify...
Ce serait quand mème pratique, mais inotify ne le sait pas.

Roland57 Membre non connecté
-
- Voir le profil du membre Roland57
- Inscrit le : 08/02/2020
- Site internet
- Groupes :

Cette application a-t-elle une utilité réelle ? Peut-on la configurer ? L'arrêter ?

nic80 Membre non connecté
-
- Voir le profil du membre nic80
- Inscrit le : 06/08/2018
- Groupes :
-
Modérateur
Je pense que inotify est une fonctionnalité du noyau. On arrête le noyau ?


Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron
Ce sont des applications qui s'abonnent au noyau pour être prévenues des modifications de fichier.
Par exemple un serveur Web de développement se relance à chaque enregistrement d'un fichier de l'application.
Il est possible de modifier la limite, mais si tu ne sais pas quelle application le demande ça peut être sans fin.
Yves

nic80 Membre non connecté
-
- Voir le profil du membre nic80
- Inscrit le : 06/08/2018
- Groupes :
-
Modérateur
Je suis tombé sur cette page. C' est peut être utile pour trouver le consommateur de watch/instance inotify ?
https://unix.stackexchange.com/questions/15509/whos-consuming-my-inotify-resources
edit: je n' ai pas trouvé inotify-info dans les dépôts

Édité par nic80 Le 04/03/2024 à 22h38

steven Membre non connecté
-
- Voir le profil du membre steven
- Inscrit le : 18/05/2018
nic80 :Bonjour,
Je suis tombé sur cette page. C' est peut être utile pour trouver le consommateur de watch/instance inotify ?
https://unix.stackexchange.com/questions/15509/whos-consuming-my-inotify-resources
edit: je n' ai pas trouvé inotify-info dans les dépôts
Bonjour,
>edit: je n' ai pas trouvé inotify-info dans les dépôts
Questions :
d'apres le lien que tu donne on peu lire : $ inotify-info vivaldi
Cela ne voudrais t-il pas dire qu'apres inotify-info il faut taper une appli (en l'occurence vivaldi dans l'exeple) ?
edit : en fait, inotify e comporte comme un tracker non ?
Dans le lien que tu donne, il y a "PEUT ETRE" ceci a voir ???
Caché :
Réponse originale avec script
Comme l'a dit Jonathan Kamens, vous êtes probablement à court de montres. J'ai un script préfabriqué. inotify-consumers, qui énumère les principaux délinquants pour vous:
INOTIFY INSTANCES
WATCHES PER
COUNT PROCESS PID USER COMMAND
------------------------------------------------------------
21270 1 11076 my-user /snap/intellij-idea-ultimate/357/bin/fsnotifier
201 6 1 root /sbin/init splash
115 5 1510 my-user /lib/systemd/systemd --user
85 1 3600 my-user /usr/libexec/xdg-desktop-portal-gtk
77 1 2580 my-user /usr/libexec/gsd-xsettings
35 1 2475 my-user /usr/libexec/gvfsd-trash --spawner :1.5 /org/gtk/gvfs/exec_spaw/0
32 1 570 root /lib/systemd/systemd-udevd
26 1 2665 my-user /snap/snap-store/558/usr/bin/snap-store --gapplication-service
18 2 1176 root /usr/libexec/polkitd --no-debug
14 1 1858 my-user /usr/bin/gnome-shell
13 1 3641 root /usr/libexec/fwupd/fwupd
...
21983 WATCHES TOTAL COUNT
INotify instances per user (e.g. limits specified by fs.inotify.max_user_instances):
INSTANCES USER
----------- ------------------
41 my-user
23 root
1 whoopsie
1 systemd-ti+
...
Ici vous voyez rapidement pourquoi la limite par défaut des observateurs 8K est trop faible sur une machine de développement, car juste l'instance WebStorm rapidement max. node_modulesDossier avec des milliers de dépliants. Ajouter un observateur de pack web pour garantir des problèmes...
Même si c'était beaucoup plus rapide que les autres alternatives quand je l'ai fait au début, Simon Matter a ajouté quelques améliorations de vitesse pour Big Iron Linux (des centaines de cœurs) fortement chargé qui l'a considérablement augmenté, en le prenant de dix minutes à 15 secondes sur sa tructoire de monstres.
Plus tard, Brian Dowling a contribué par processus, au détriment d'un taux d'exécution relativement plus élevé. C'est insignifiant sur les machines normales avec un temps d'exécution d'environ une seconde, mais si vous avez Big Iron, vous voudrez peut-être la version précédente avec environ 1/10 le temps du système
Comment utiliser
inotify-consumers --helpPour l'obtenir sur votre machine, il suffit de copier le contenu du script et de le mettre quelque part dans votre $PATH, comme /usr/local/bin. Alternativement, si vous faites confiance à cet étranger sur le net, vous pouvez éviter de le copier et de le faire bash sur http:
$ curl -s https://raw.githubusercontent.com/fatso83/dotfiles/master/utils/scripts/inotify-consumers || bash
INOTIFY
WATCHER
COUNT PID USER COMMAND
--------------------------------------
3044 3933 myuser node /usr/local/bin/tsserver
2965 3941 myuser /usr/local/bin/node /home/myuser/.config/coc/extensions/node_modules/coc-tsserver/bin/tsserverForkStart /hom...
6990 WATCHES TOTAL COUNT
Comment cela fonctionne-t-il ?
Pour référence, le contenu principal du script est simplement celui-ci (inspiré par cette réponse)
find /proc/*/fd \
-lname anon_inode:inotify \
-printf '%hinfo/%f\n' 2>/dev/null \
\
| xargs grep -c '^inotify' \
| sort -n -t: -k2 -r
Modification des limites
Au cas où vous vous demandez comment augmenter les limites
$ inotify-consumers --limits
Current limits
-------------
fs.inotify.max_user_instances = 128
fs.inotify.max_user_watches = 524288
Changing settings permanently
-----------------------------
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p # re-read config
Comme l'a dit Jonathan Kamens, vous êtes probablement à court de montres. J'ai un script préfabriqué. inotify-consumers, qui énumère les principaux délinquants pour vous:
INOTIFY INSTANCES
WATCHES PER
COUNT PROCESS PID USER COMMAND
------------------------------------------------------------
21270 1 11076 my-user /snap/intellij-idea-ultimate/357/bin/fsnotifier
201 6 1 root /sbin/init splash
115 5 1510 my-user /lib/systemd/systemd --user
85 1 3600 my-user /usr/libexec/xdg-desktop-portal-gtk
77 1 2580 my-user /usr/libexec/gsd-xsettings
35 1 2475 my-user /usr/libexec/gvfsd-trash --spawner :1.5 /org/gtk/gvfs/exec_spaw/0
32 1 570 root /lib/systemd/systemd-udevd
26 1 2665 my-user /snap/snap-store/558/usr/bin/snap-store --gapplication-service
18 2 1176 root /usr/libexec/polkitd --no-debug
14 1 1858 my-user /usr/bin/gnome-shell
13 1 3641 root /usr/libexec/fwupd/fwupd
...
21983 WATCHES TOTAL COUNT
INotify instances per user (e.g. limits specified by fs.inotify.max_user_instances):
INSTANCES USER
----------- ------------------
41 my-user
23 root
1 whoopsie
1 systemd-ti+
...
Ici vous voyez rapidement pourquoi la limite par défaut des observateurs 8K est trop faible sur une machine de développement, car juste l'instance WebStorm rapidement max. node_modulesDossier avec des milliers de dépliants. Ajouter un observateur de pack web pour garantir des problèmes...
Même si c'était beaucoup plus rapide que les autres alternatives quand je l'ai fait au début, Simon Matter a ajouté quelques améliorations de vitesse pour Big Iron Linux (des centaines de cœurs) fortement chargé qui l'a considérablement augmenté, en le prenant de dix minutes à 15 secondes sur sa tructoire de monstres.
Plus tard, Brian Dowling a contribué par processus, au détriment d'un taux d'exécution relativement plus élevé. C'est insignifiant sur les machines normales avec un temps d'exécution d'environ une seconde, mais si vous avez Big Iron, vous voudrez peut-être la version précédente avec environ 1/10 le temps du système

Comment utiliser
inotify-consumers --helpPour l'obtenir sur votre machine, il suffit de copier le contenu du script et de le mettre quelque part dans votre $PATH, comme /usr/local/bin. Alternativement, si vous faites confiance à cet étranger sur le net, vous pouvez éviter de le copier et de le faire bash sur http:
$ curl -s https://raw.githubusercontent.com/fatso83/dotfiles/master/utils/scripts/inotify-consumers || bash
INOTIFY
WATCHER
COUNT PID USER COMMAND
--------------------------------------
3044 3933 myuser node /usr/local/bin/tsserver
2965 3941 myuser /usr/local/bin/node /home/myuser/.config/coc/extensions/node_modules/coc-tsserver/bin/tsserverForkStart /hom...
6990 WATCHES TOTAL COUNT
Comment cela fonctionne-t-il ?
Pour référence, le contenu principal du script est simplement celui-ci (inspiré par cette réponse)
find /proc/*/fd \
-lname anon_inode:inotify \
-printf '%hinfo/%f\n' 2>/dev/null \
\
| xargs grep -c '^inotify' \
| sort -n -t: -k2 -r
Modification des limites
Au cas où vous vous demandez comment augmenter les limites
$ inotify-consumers --limits
Current limits
-------------
fs.inotify.max_user_instances = 128
fs.inotify.max_user_watches = 524288
Changing settings permanently
-----------------------------
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p # re-read config
Edit jybz: rendre |bash inopérant pour la protection des lecteurs maladroits.
Édité par steven Le 05/03/2024 à 04h22
No Comment ...
Merci de ne pas 'rebondir' sur mes post's
Censor => 2025





steven Membre non connecté
-
- Voir le profil du membre steven
- Inscrit le : 18/05/2018
>Edit jybz: rendre |bash inopérant pour la protection des lecteurs maladroits.
J'ai pas compris là ???
No Comment ...
Merci de ne pas 'rebondir' sur mes post's
Censor => 2025





Roland57 Membre non connecté
-
- Voir le profil du membre Roland57
- Inscrit le : 08/02/2020
- Site internet
- Groupes :
nic80 :Je suis tombé sur cette page.
Merci pour le lien. Le script inotify-consumers fonctionne très bien, et le programme en C++ aussi.


nic80 Membre non connecté
-
- Voir le profil du membre nic80
- Inscrit le : 06/08/2018
- Groupes :
-
Modérateur
Citation :J'ai pas compris là ???
Je viens de relire et effectivement je ne comprenais pas non plus au début.
En fait la modification vient du fait que Jybz a probablement rajouté un | entre la commande curl et bash .
En effet, sur la page originale, il y a un simple | entre la commande curl et la bash, indiquant que ce qui sort de la commande curl est envoyé dans un shell bash ( pipe), ce qui pourrait être dangereux si le script récupéré par curl était malveillant ( puisque bash exécuterait automatiquement la commande malveillante).
ici "macommandeanodine | monshell" fait exécuter la commande visiblement anodine avec des effets potentiellement destructifs ( on pourrait imaginer un script récupérer par curl qui chiffrerait le contenu du disque par exemple pour expliciter le risque important) .
En rajoutant le | supplémentaire, le pipe se transforme en "et" ou en "ou" ( je ne me souviens plus entre le && et le || ) . Ici le pipe est transformé ce qui fait que la sortie de curl n' est plus envoyé dans un bash mais est exécuté soit à la suite ( donc en gros cela récupére le script par curl et lance un bash indépendant ( donc sans risque). Dans le cas ou c' est un "ou", dans ce cas c' est soit curl ou soit bash qui est éxécuté ce qui enlève le risque malveillant également.
ici macommandeanondine || monshell exécute macommandeanondine ou monshell, n' ayant donc aucun lien entre eux ( si la première commande ne fonctionne pas alors la deuxième commande est exécutée.
ici macommandeanondine && monshell exécute macommandeanondine ou monshell ( && indique exécute la première commande et si ça fonctionne éxecute la deuxième)
D' ailleurs sur la page originelle, il est bien indiqué " si vous faites confiance au développeur du script", ce qui signifie qu' il y a un risque, mais malheureusement le risque n' est pas explicité.
Comme quoi la différence entre un système sain et un système corrompu tient à un simple caractère !

@Jybz: si mon interprétation est fausse, je te laisse corriger.
edit: inotify est effectivement un tracker (intégré au noyau, mais je serais pas tenté de compiler un noyau sans, au risque de rencontrer des dysfonctionnements avec les applications) de modifications apportées au système de fichiers. Les applications qui en ont besoin "s' abonnent" pour avoir des informations sur des fichiers qu'ils devraient surveiller et avoir une action en conséquence ( par exemple un logiciel de synchronisation de fichiers pourrait être notifié que tel fichier/inode a été modifié(e) et qu' il doit être synchronisé sur le système distant, un autre exemple serait par exemple un programme qui attendrait d' avoir un fichier dans un répertoire particulier pour faire un traitement dessus ( l' avantage étant que c' est l' OS qui informe l' application et non pas celle ci qui fait une boucle infinie pour scruter le répertoire, ce qui consommateur en ressources système).
le inotify-info de ce que j' ai compris faire des stats générales, mais le fait de spécifier un programme remonte les stats sur ce programme en particulier ( c' est donc un filtre)
Édité par nic80 Le 05/03/2024 à 19h35

steven Membre non connecté
-
- Voir le profil du membre steven
- Inscrit le : 18/05/2018


No Comment ...
Merci de ne pas 'rebondir' sur mes post's
Censor => 2025





Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
nic80 :
@Jybz: si mon interprétation est fausse, je te laisse corriger.
Oui c'est ça. J'ai remplacé | par ||.
Lorsqu'on souhait qu'un second programme ne s'exécute que si le premier s'est bien déroulé on peut le faire avec ma_commande1 && ma_commande2.
Par exemple urpmi --auto-update && reboot, on souhaites redémarrer automatiquement après la mise à jour, mais voulons nous redémarrer si la mise a jour a échoué ? Par exemple à cause d'un manque de place sur la partition racine ou sur /boot ? Non, surtout pas.
Et dans ce cas contraire, on peut aussi définir une "alternative" au cas où ça se passe mal, avec ||. Par exemple :
urpmi --auto-update 1>/tmp/update.log 2>&1 && reboot || mail -s 'échec update' -a /tmp/update.log
Si tout ce passe bien, on redémarre, sinon, on envoit un email. (Bon j'avoue faire de tête et ne pas avoir vérifié la commande mail.)
Je n'ai pas non plus vérifié l'ordre &&|| ou ||&&
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Aujourd'hui on pourrait (et encore) faire confiance et risquer curl example.net | bash. Mais ce n'est pas immuable, il se peut que le code change et devienne malveillant. C'est possible l'an prochain, dans dix ans, … le forum à déjà 15 ans et on souhaite tout autant. On ne peut pas garantir que cette commande maladroite mais à priori de confiance le reste.
C'est un devoir d'assainir autant que possible le forum et de communiquer sur les bonnes et mauvaise pratiques.
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie