Sé que Ubuntu (y Fedora) utiliza Upstart vez de usar el conexión de los clásicos de System V init demonio (SysVinit).

Me gustaría saber cómo detectar cuando una unidad USB se ha insertado, montaje y copiar algunos archivos. Me gustaría Upstart para llamar a mi propio script para esta.

Si es posible me gustaría Upstart para llamar a la secuencia de comandos para una específicos USB-drive, por lo que me gustaría conseguir la funcionalidad normal para cada unidad USB excepto mi «copia de seguridad instantánea» unidad USB.

Si Advenedizo podría enviar el USB de la unidad de identificación de la cadena como argumento a mi script supongo que sería la solución ideal, como me gustaría ser capaz de tener el id de cadena en mi script y, posiblemente, podría hacer que el script de manejar dos dispositivos USB sin mucho cambio.

Y como nota al margen, ¿sabes de algún otro sistema, a excepción de Advenedizo que se encarga de los dispositivos USB, la red, los sistemas de archivos montados en un buen camino? (Como SysVinit parece que no.)

OriginalEl autor | 2009-02-26

2 Comentarios

  1. 8

    upstart no parece que vienen con el dispositivo usb «enchufado» señales fuera de la caja. El enfoque ha sido hasta ahora para hacer casi exactamente la misma cosa como init, y el «cool anunciado características» en el futuro.

    Desde el wiki de Fedora: «…llegar Advenedizo sí mismo en su lugar ahora, a pesar de estar funcionando como SysV ahora, nos va a permitir comenzar una transición suave hacia este modelo.»

    Por suerte, usted puede implementar en el futuro a ti mismo por tener udev ejecutar una secuencia de comandos para enviar su costumbre advenedizo de la señal para advenedizo puede llamar a su script de copia de seguridad. Usted también podría tener udev llame a su script de copia de seguridad directamente.

    udev ya tiene una manera sencilla de ejecutar secuencias de comandos cuando los dispositivos están conectados y desconectados. Ver cambiar el nombre de tu unidad de disco duro usb del nombre del dispositivo con las reglas de udev. En mi sistema, yo tendría que usar udevadm monitor --env en lugar de la del tutorial udevmonitor --env. Después de seguir el tutorial, habría que crear otra regla de udev como este:

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

    Sustitución de ID_SERIAL_SHORT con el dispositivo real id, y $env{NAME} con lo udev variable de entorno(s) de su script necesita para encontrar el dispositivo de copia de seguridad. Usted puede ser que necesite a fondo la secuencia de comandos para evitar el bloqueo de udev.

    Si quieres usar advenedizo, usted podría tener su regla de udev ejecutar /sbin/initctl emit back-it-up VARIABLE=$env{VARIABLE} ... y, a continuación, escribir una secuencia de comandos en /etc/event.d comenzando con la línea de start on back-it-up.

    Ver también ¿Cómo puedo escuchar el ‘dispositivo usb insertado’ eventos en Linux, en Python? para sugerencias en hacer lo mismo con DBus. DBus podría ser más conveniente si usted quiere tener el usuario que ha iniciado sesión ejecutar un usermode «reloj de la unidad de copia de seguridad» del demonio.

    Gracias por tu informativos respuesta! Tengo una pregunta. ¿Por qué no puedo usar Upstart para esto? (No dar una motivación.)
    Upstart no parece ofrecer la «unidad usb conectada en» mensajes, por lo que bien podría definir su propia con udev (o dbus, o …), o simplemente se han udev llame a su script de copia de seguridad directamente y ser compatible con muchos más sistemas Linux.
    Yo creo que para el caso de uso DBus sería el camino a seguir, como usted probablemente desea que el servicio de copia de seguridad para estar de cara al usuario. También, @joforker – gran respuesta!
    Gracias joeforker para su respuesta informativa! Y gracias por tu comentario añadido Guss! Voy a dwelve más profundo en esto ahora. 🙂
    Yo era capaz de automount en la unidad de insertar el uso de dbus mediante la adición de 2 o 3 líneas para el ejemplo de q469243. Cosas divertidas.

    OriginalEl autor joeforker

  2. 4

    En Ubuntu 9.10 y más reciente Advenedizo tiene algunos udev capacidades a través de la upstart-udev-bridge servicio.

    #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

    Me encanta lo simple y elegante advenedizo puede ser. Sin embargo, un DBus solución podría ser mejor si es menos elegante. Con un DBus solución podría emergente de las notificaciones al usuario y facilitar el control de usuario.

    OriginalEl autor deft_code

Dejar respuesta

Please enter your comment!
Please enter your name here