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
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.
Vous pouvez donner une commande en tant que root comme ceci:
udevadm moniteur
Il montrera quand une règle a tiré.
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
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
...