web-dev-qa-db-fra.com

Comment vérifier si une règle UDev est-elle tirée?

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 du tout ne se passe lorsque je branche des lecteurs externes. Comment puis-je vérifier (un journal, une commande, n'importe quoi) si la règle a tiré?

Merci beaucoup

16
pouzzler

Je suis à peu près 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 comme la racine.

5
Redsandro

Vous pouvez donner une commande en tant que root comme ceci:

udevadm moniteur

Il montrera quand une règle a tiré.

3
user2703782

Je couronne le noyau 3.0.35, mais ce qui suit fonctionne pour moi.

Pour obtenir le chemin pour l'appareil, vous pouvez faire quelque chose comme ceci:

udevadm info --name /dev/sda1 --query all

Vous aurez plus d'informations que nécessaire, mais vous êtes intéressé par le devpath. Ensuite, pour voir ce que les règles Udev sont exécutées, vous exécutez ceci:

udevadm test DEVPATH

Je ne pense pas que cela exécute réellement les règles, la documentation indique que cela "simule" les événements de l'appareil donné. Pour obtenir plus d'informations, consultez cette page d'homme: https://www.freedesktop.org/software/systemd/man/udevadm.html

2
JSunderland

udevadm test $(udevadm info --query=path --name=device_name) devrait vous dire quelles commandes serait être exécutée sur un périphérique plug-in, citant les règles udev Règles impliquées. Par exemple:

# udevadm test /block/sdd
...
udev_rules_apply_to_event: PROGRAM '/sbin/multipath -c /dev/sdd' /lib/udev/rules.d/40-multipath.rules:11
...
0
Dmitry Grigoryev