Question

Je sais que Ubuntu (et Fedora) utilise Upstart istead du démon init système classique V (SysVinit) .

Je voudrais savoir comment détecter lorsqu'un lecteur USB a été inséré, le monter et copier des fichiers. Je voudrais Upstart appeler mon propre script pour cela.

S'il est possible que je voudrais Upstart appeler le script pour un spécifique USB-lecteur, de sorte que je recevrais une fonctionnalité normale pour chaque lecteur USB, sauf mon USB-lecteur « sauvegarde instantanée » .

Si Upstart pourrait envoyer la chaîne d'identification USB-lecteur comme un argument à mon script, je suppose que ce serait la solution idéale, car je serais en mesure d'avoir la chaîne d'identification dans mon script et peut-être le script pourrait gérer deux ports USB -drives sans beaucoup de changement.

Et comme un côté note, vous savez tout autre système, sauf Upstart qui gère les lecteurs USB, les systèmes de fichiers montés en réseau et comme une manière agréable? (Comme SysVinit ne semble pas .)

Était-ce utile?

La solution

upstart ne semble pas venir avec « périphérique USB branché » signaux hors de la boîte. L'accent a été jusqu'à présent de faire à peu près exactement la même chose que init, et les « caractéristiques » sont annoncés frais à l'avenir.

Depuis le wiki Fedora : » ... se Upstart se maintenant en place , même si elle ne sera fonctionne comme SysV maintenant, nous permettra de commencer une transition en douceur vers ce modèle. "

Heureusement, vous pouvez mettre en œuvre le futur vous-même en ayant udev exécuter un script pour envoyer votre signal arriviste personnalisé si arriviste peut appeler votre script de sauvegarde. Vous pouvez également udev appeler votre script de sauvegarde directement.

udev a déjà un moyen simple pour exécuter des scripts lorsque les périphériques sont branchés et débranchés. Voir Renommez votre nom de périphérique USB disque dur avec udev règles . Sur mon système, je dois utiliser udevadm monitor --env au lieu de udevmonitor --env du tutoriel. Après avoir suivi le tutoriel, vous devez créer une autre règle udev comme celui-ci:

echo 'SUBSYSTEM=="block", ID_SERIAL_SHORT=="101A9041C67D182E", \
NAME="myusbdrive", \
RUN+="/my/backup/script $env{NAME}"' > /etc/udev/rules.d/S96-mydrive.rules

Remplacement ID_SERIAL_SHORT avec l'identifiant réel de votre appareil, et avec $env{NAME} quelle que soit la variable d'environnement udev (s) a besoin de votre script pour trouver le périphérique de sauvegarde. Vous pourriez avoir besoin de fond le script pour éviter le blocage udev.

Si vous voulez utiliser arriviste, vous pourriez avoir votre règle udev /sbin/initctl emit back-it-up VARIABLE=$env{VARIABLE} ... puis écrire un script dans /etc/event.d en commençant par la ligne start on back-it-up.

Voir aussi Comment puis-je écouter « périphérique USB inséré » événements dans Linux, en Python? pour obtenir des conseils sur faire la même chose avec DBus . DBus pourrait être plus pratique si vous voulez avoir l'utilisateur connecté exécuter un usermode démon « pour regarder lecteur de sauvegarde ».

Autres conseils

Dans Ubuntu 9.10 et plus récent Upstart a des capacités de udev via le service upstart-udev-bridge.

#thumbdrive_special.conf
start on block-device-added

task

script
   if [ `blkid $DEV` -eq "YOUR-THUMBDRIVES-UUID" ]; then
      /home/you/bin/thumbdrive_special $DEV
   fi
end script

J'aime comment arriviste simple et élégant peut être. Cependant, une solution DBus pourrait être mieux si moins élégante. Avec une solution DBus vous pourriez apparaître des notifications à l'utilisateur et fournir un contrôle utilisateur facile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top