我购买了一个小型 USB HD,用于进行日常备份,上面有一个 encfs 系统。
我在根目录中有一个autorun
脚本,它可以执行一些操作,包括挂载 enc-FS,并且该部分运行良好。
但是,如果我在弹出 enc-FS 之前忘记了fusermount -u
它,则不会有任何警告,USB 会卸载,而 encFS 部分似乎仍处于挂载状态。当然事实并非如此,尝试使用 nautilus 进行访问会导致机器“行为异常”。
我认为还存在丢失文件的风险。
在这种情况下,由于某种原因,系统似乎无法检测到驱动器仍然像平常一样处于活动状态。
无论如何,我的问题是,是否可以设置在 USB 弹出时运行的卸载自动运行功能?
谢谢
答案1
好吧,我想出了一个不太优雅的方法来解决这个问题。autorun
脚本如下所示:
#!/bin/bash
/path/to/mount-script&
while : # loop isn't really needed ...
do
sleep 999d # ... because the script will idle for 999 days
if (($?))
then
# sleep closed abnormally, so tidy up
/path/to/dismount-script
exit 1
fi
done
因此,当驱动器弹出时,系统会检测sleep
并bash
仍在运行,并弹出警告对话框;右键单击sleep
对话框并结束它,然后导致退出状态 130,这意味着卸载脚本被调用,当它返回时,bash 脚本终止,然后 USB 设备会干净地弹出。