在SD卡上测试文件 - 缓存?

时间:2013-06-28 19:35:50

标签: bash debian sd-card

我有一个带有SD卡读卡器的debian linux盒子。当SD卡不存在时,我似乎可以执行文件IO(到某一点)。我需要一种方法来确保我正在阅读的文件实际上是卡上的文件,而不是缓存中的文件。

详细信息:如果我将文件放在SD卡上并阅读它:

#!/bin/bash
if [-e "/media/usb3/disk_id"]
   id=`cat /media/usb3/disk_id`
   logger "disk id: $id"
else
   logger "not there"
fi

如果我插入带有'disk_id'文件的磁盘,这可以工作(IE预期的行为)。 但是如果我取出SD卡,它会继续工作......或者放入另一张没有该文件的卡片。

我可以使用blkid -d /dev/null检测SD卡的存在/不存在但是我不确定如何绕过操作系统正在进行的缓存。

建议?

1 个答案:

答案 0 :(得分:0)

如果在未正确卸载设备的情况下移除设备,则会发现此行为。你真的无能为力。至少没什么简单的。

您可以尝试通过向其写入内容(可能创建新文件)然后调用fsync来检测块设备是否存在。如果块设备不再存在,则fsync将失败。

我不知道如何在bash脚本中执行此操作。

您应该确保在不卸载SD卡的情况下不要弹出SD卡。