linux – Upstart调用脚本(用于插入USB驱动器)

前端之家收集整理的这篇文章主要介绍了linux – Upstart调用脚本(用于插入USB驱动器)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道Ubuntu(和Fedora)使用 Upstart而不是经典的System V init守护进程(SysVinit).

我想知道如何检测何时插入USB驱动器,安装它并将一些文件复制到它.我希望Upstart为此调用我自己的脚本.

如果可能的话,我希望Upstart为特定的USB驱动器调用脚本,这样除了我的“即时备份”USB驱动器之外,我将获得每个USB驱动器的正常功能.

如果Upstart可以将USB驱动器标识字符串作为参数发送到我的脚本,我想这将是理想的解决方案,因为我可以在我的脚本中使用id字符串并且可能使脚本处理两个USB驱动器而不用变化很大.

作为旁注,您是否知道除了Upstart以外的任何其他系统处理USB驱动器,网络安装文件系统等等? (截至SysVinit seems not to.)

解决方法

upstart似乎没有附带“usb设备插入”信号开箱即用.到目前为止,重点一直是做与init完全相同的事情,并且“酷炫的广告功能”将来也会如此.

From the Fedora wiki:“……现在让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可能更方便.

猜你在找的Linux相关文章