upstart
似乎没有开箱即用的“usb device plugged in”信号。到目前为止,重点一直是做与 init 几乎完全相同的事情,并且“很酷的广告功能”是在未来。
来自 Fedora wiki:“......现在让 Upstart 本身就位,即使它现在只能像 SysV 那样运行,也将使我们能够开始向这个模型的平稳过渡。”
幸运的是,您可以通过让 udev 运行脚本来发送您的自定义 upstart 信号来自己实现未来,以便 upstart 可以调用您的备份脚本。您也可以让 udev 直接调用您的备份脚本。
udev
已经有一种简单的方法来在设备插入和拔出时运行脚本。请参阅使用 udev 规则重命名您的 USB 硬盘驱动器的设备名称。在我的系统上,我必须使用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 emit back-it-up VARIABLE=$env{VARIABLE} ...
,然后写一个以/etc/event.d
行开头的脚本start on back-it-up
。
另请参阅如何在 Python 中侦听 Linux 中的“插入 USB 设备”事件?有关对DBus执行相同操作的提示。如果您想让登录的用户运行用户模式“监视备份驱动器”守护程序,DBus 可能会更方便。