![当硬件插入时执行脚本](https://linux22.com/image/529352/%E5%BD%93%E7%A1%AC%E4%BB%B6%E6%8F%92%E5%85%A5%E6%97%B6%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC.png)
当我连接特定硬件时,如何告诉我的 Ubuntu 安装在执行一些脚本?
例如:我有一个外部 eSATA 磁盘。当插入此磁盘(且仅插入此磁盘)时,我的笔记本应执行 backup.sh 脚本。
此外,如果我能了解这些自动执行情况就好了。最漂亮的是 gnome 面板上的指示器。但是弹出一个显示脚本输出的终端也不错。
答案1
可以告诉 udev 在设备插入时执行某些操作。这里http://blog.deadlypenguin.com/blog/2009/09/25/automatic-backups-with-udev/ 你看别人是如何用 USB 磁盘做的,用 e-sata 磁盘做应该非常相似。
答案2
您必须让脚本作为用户守护进程运行,通过 D-Bus 监听 hal 事件。
答案3
您可以在 udev 规则中使用 RUN 来完成至少部分操作。例如,请参阅此操作指南:https://help.ubuntu.com/community/UsbDriveDoSomethingHowto
这不包括通知或输出——您可以让脚本将其结果放入文件中,并让帐户中运行的其他程序监视该文件。(有许多现有程序可用于在 GUI 中监视文件——例如,有一个 gkrellm 插件。)
建议让后台进程监听 dbus 事件,这是另一种可行的方法,并且在某些方面更为优雅(最重要的是您不需要处理系统范围的配置)。但它也需要更多一点的 Linux 管道级知识和编程工作。