我找到了几个关于如何打开/弹出/安装 CD-ROM/驱动器的问题/答案。但我在寻找其他东西:我想在 CD 驱动器关闭或打开时运行一个脚本,里面是否有 CD 并不重要,也不管它是打开还是关闭,基本上我只需要连接一种用于 CD 驱动器按钮的 »down/up« 事件的事件处理程序。
答案1
到目前为止,我发现的唯一解决方案是使用 ioctl 不断轮询驱动器的状态。请参阅是否有命令可以检测 CD 抽屉是打开还是关闭? 每次轮询时关闭并重新打开文件描述符很重要;否则,您可能无法安装插入的 CD 或 DVD。YMMV,我是新手,所以可能有更好的方法。在我的带有 USB DVD 驱动器的 RHEL 7 盒上,我看到托盘打开时驱动器状态更改为 2 (CDS_TRAY_OPEN),关闭时短暂更改为 3 (CDS_DRIVE_NOT_READY),然后更改为 1 (CDS_NO_DISC) 或 4 (CDS_DISC_OK)。
我对 udev 寄予厚望,但对于我的驱动器,我只看到添加或移除驱动器、打开托盘(托盘中装有光盘)或关闭托盘的事件。我没有看到打开空托盘的事件。您可以尝试运行udevadm monitor
并查看是否收到打开或关闭托盘的事件。如果是,您可以制定 udev 规则以在发生这些事件时运行脚本:https://opensource.com/article/18/11/udev
我所有的测试都是在 RHEL 7 上进行的,因此如果有任何内容与 Ubuntu 18.04 无关,请见谅。