J'essaie de me familiariser avec udev, sous Ubuntu 13.10.
Voici ma première règle simple 95.usbbackup.rules:
ACTION=="add", SUBSYSTEMS="usb", RUN+="/usr/local/bin/my_backup.sh"
et voici le script (qui a été chmodded + x) my_backup.sh:
#!/bin/bash
touch /tmp/test
Rien ne se passe du tout lorsque je branche des disques externes. Comment puis-je vérifier (un journal, une commande, quoi que ce soit) si la règle a été déclenchée?
Merci beaucoup
SUBSYSTEMS=="usb"
. C'est-à-dire double==
qui teste l'égalité plutôt que simple=
qui attribue une valeur à une clé.Réponses:
Je suis sûr que cela devrait fonctionner. Avez-vous rechargé vos règles udev après avoir modifié vos règles?
udevadm control --reload-rules && udevadm trigger
en tant que root.la source
KERNEL!="sdz*"
et vous devriez tout obtenir (sauf sdz [1-9])udevadm monitor
Vous pouvez donner une commande en tant que root comme ceci:
Il montrera quand une règle a été déclenchée.
la source
udevadm monitor
affiche simplement les événements udev, mais pas si une règle correspondante a été déclenchée. Cependant, vous pouvez rechercher l'événement qui doit déclencher la règle, mais vous ne savez pas si votre règle fonctionne.J'utilise le noyau 3.0.35, mais ce qui suit fonctionne pour moi.
Pour obtenir le chemin de l'appareil, vous pouvez faire quelque chose comme ceci:
Vous obtiendrez plus d'informations que nécessaire, mais vous êtes intéressé par le DEVPATH. Ensuite, pour voir quelles règles udev sont exécutées, vous exécutez ceci:
Je ne pense pas que cela exécute réellement les règles, la documentation dit que cela «simule» les événements pour le périphérique donné. Pour obtenir plus d'informations, consultez cette page de manuel: https://www.freedesktop.org/software/systemd/man/udevadm.html
la source
Avec udev / systemd version 241 et similaire, en tant que root:
Ou pour le rendre permanent, encore une fois en tant que root:
PS: la mauvaise réponse la plus fréquente mais à mon humble avis ressemble à:
udevadm -d test / devices / where / is / my / device | & less... mais cela pose un certain nombre de problèmes. Les principaux:
where/is/my/device
? Fastidieux, compliqué et sujet aux erreurs.La comparaison des anciennes réponses à la sortie récente de la version 241 d'udev
udevadm test
semble montrer moins d'informations qu'auparavant.udevadm -d test
n'est qu'une simulation ! Chaque fois qu'il avertit:Ce programme est destiné au débogage uniquement, il n'exécute aucun programme spécifié par une clé RUN. Il peut afficher des résultats incorrects, car certaines valeurs peuvent être différentes ou non disponibles lors d'une simulation.
udevadm test
sert à développer une nouvelle règle, pas à dépanner des règles brisées, manquantes ou remplacées.la source
J'avais le même problème avec Raspberry Pi 3 B +. J'essayais d'invoquer un script lors de l'insertion d'un périphérique de stockage USB. Les règles ne sont pas enregistrées dans syslog, il devient donc très difficile de comprendre quelle règle a fonctionné ou quelle règle a échoué.
J'ai donc fait ce qui suit:
sudo /etc/init.d/udev restart
et quand j'ai vérifié, ça a marché.
Une information, qui peut être utile ou non, est que les systèmes de fichiers sont en lecture seule pour udev jusqu'à ce que la commande de l'étape 2 soit exécutée.
la source
udevadm test $(udevadm info --query=path --name=device_name)
devrait vous dire quelles commandes seraient exécutées sur un plug-in de périphérique, en citant lesudev
règles impliquées. Par exemple:la source