我想知道如何检测何时插入USB驱动器,安装它并将一些文件复制到它.我希望Upstart为此调用我自己的脚本.
如果可能的话,我希望Upstart为特定的USB驱动器调用脚本,这样除了我的“即时备份”USB驱动器之外,我将获得每个USB驱动器的正常功能.
如果Upstart可以将USB驱动器标识字符串作为参数发送到我的脚本,我想这将是理想的解决方案,因为我可以在我的脚本中使用id字符串并且可能使脚本处理两个USB驱动器而不用变化很大.
作为旁注,您是否知道除了Upstart以外的任何其他系统处理USB驱动器,网络安装文件系统等等? (截至SysVinit seems not to.)
解决方法
@L_403_2@:“……现在让Upstart成为现实,即使它现在只能像SysV那样运作,也能让我们开始顺利过渡到这个模型.”
幸运的是,您可以通过让udev运行脚本来发送自定义的upstart信号来实现未来,这样新贵可以调用您的备份脚本.您也可以让udev直接调用您的备份脚本.
udev已经有一种简单的方法来在插入和拔出设备时运行脚本.请参阅rename your usb hard drive’s device name with udev rules.在我的系统上,我将不得不使用udevadm monitor –env而不是教程的udevmonitor –env.在学完本教程后,您将创建另一个类似于此的udev规则:
echo 'SUBSYSTEM=="block",ID_SERIAL_SHORT=="101A9041C67D182E",\ NAME="myusbdrive",\ RUN+="/my/backup/script $env{NAME}"' > /etc/udev/rules.d/S96-mydrive.rules
将ID_SERIAL_SHORT替换为您设备的实际ID,将$env {NAME}替换为您的脚本查找备份设备所需的任何udev环境变量.您可能需要对脚本进行后台处理以避免阻止udev.
如果你想使用upstart,你可以让你的udev规则运行/ sbin / initctl发出备用VARIABLE = $env {VARIABLE} …然后在/etc/event.d中以行开头写一个脚本从备份开始.
有关对DBus执行相同操作的提示,另请参阅How can I listen for ‘usb device inserted’ events in Linux,in Python?.如果您希望登录用户运行usermode“watch for backup drive”守护程序,则DBus可能更方便.