Frage

Ich weiß, dass Ubuntu (und Fedora) verwendet Upstart istead des klassischen System V init-Daemon (SysVinit) .

Ich würde gerne wissen, wie zu erkennen, wenn ein USB-Laufwerk eingelegt wurde, montieren und einige Dateien kopieren. Ich möchte Upstart mein eigenes Skript für diese nennen.

Wenn es möglich ist, würde ich Upstart wie das Skript für einen spezifisches rufe USB-Laufwerk, so dass ich normale Funktionalität für jedes USB-Laufwerk außer meinem „instant backup“ USB-Laufwerk bekommen würde .

Wenn Upstart könnte die USB-Laufwerk Identifikationszeichenfolge als Argument an mein Skript schickt Ich denke, dass die ideale Lösung wäre, da ich in der Lage wäre, den ID-String in meinem Skript zu haben und möglicherweise das Skript zwei USB-Griff machen könnte -Antriebe ohne große Veränderungen.

Und als Nebennote, wissen Sie, anderes System außer Upstart, die USB-Laufwerke Griffe, Netzwerk-Dateisysteme und so auf einer netten Art? (Wie SysVinit scheint nicht .)

War es hilfreich?

Lösung

upstart scheint nicht mit „USB-Gerät angeschlossen“ Signalen aus der Box zu kommen. Der Fokus ist bisher so ziemlich genau das Gleiche wie init zu tun, und die „cool beworbenen Features“ sind in der Zukunft.

Von dem Fedora-Wiki :“... immer Upstart selbst an Ort und Stelle jetzt , obwohl es wird nur als SysV tut jetzt funktioniert, wird es uns ermöglichen, einen reibungslosen Übergang zu diesem Modell zu beginnen. "

Zum Glück kann man die Zukunft selbst implementieren, indem udev ein Skript ausführen Ihre benutzerdefinierten Emporkömmling Signal zu senden, so kann Emporkömmling Ihr Backup-Skript aufrufen. Sie könnten auch haben udev direkt Ihr Backup-Skript aufrufen.

udev hat bereits eine einfache Möglichkeit, Skripte auszuführen, wenn Geräte angeschlossen sind und vom Netz getrennt. Siehe benennen Sie Ihre USB-Gerätename der Festplatte mit udev Regeln . Auf meinem System, würde ich udevadm monitor --env anstelle des Tutorials der udevmonitor --env verwenden.

: Nachdem Sie das Tutorial, würden Sie eine andere udev-Regel wie diese erstellen
echo 'SUBSYSTEM=="block", ID_SERIAL_SHORT=="101A9041C67D182E", \
NAME="myusbdrive", \
RUN+="/my/backup/script $env{NAME}"' > /etc/udev/rules.d/S96-mydrive.rules

Ersetzen ID_SERIAL_SHORT mit tatsächlichen ID Ihres Geräts und $env{NAME} mit dem, was udev-Umgebungsvariable (n) Ihre Skript muss das Backup-Gerät finden. Sie könnten das Skript Hintergrund müssen vermeiden udev blockiert.

Wenn Sie Emporkömmling verwenden möchten, könnten Sie Ihre udev-Regel laufen /sbin/initctl emit back-it-up VARIABLE=$env{VARIABLE} ... haben und dann ein Skript in /etc/event.d mit der Linie start on back-it-up beginnend schreiben.

Siehe auch Wie kann ich für 'uSB-Gerät eingesteckt' Ereignisse in Linux, in Python hören? mit dem gleichen für Hinweise auf tun? DBus . DBus könnte bequemer sein, wenn Sie die in Benutzer einen Benutzermodus-Dämon „für Backup-Laufwerk watch“ laufen angemeldet haben wollen.

Andere Tipps

In Ubuntu 9.10 und neuere Upstart hat einige udev-Funktionen durch den upstart-udev-bridge Service.

#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

Ich liebe, wie einfach und elegant Emporkömmling sein kann. Allerdings könnte eine D-Bus-Lösung besser, wenn weniger elegant. Mit einer DBus Lösung könnten Sie Benachrichtigungen an den Benutzer Pop-up und einfache Steuerung Benutzer bereitstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top