如果linux中的USB设备中的文件系统有任何变化或者如何使用递归inotify,如何获得通知

时间:2018-04-02 06:04:12

标签: linux inotify

有人可以告诉我有没有任何实用工具可以检测连接USB的文件系统是否有任何变化? 要么 任何人都可以递归地提供inotify的示例代码。

1 个答案:

答案 0 :(得分:2)

USB存储设备不包含"文件"在摘要中。

但它通常有一些file system(通常是VFAT,但这可能是别的;我有时用ext4 FS格式化USB密钥,而且我确实有一个带有USB密钥的USB磁盘它上面都是VFAT和ext4文件系统)。该文件系统应为mounted,以便您在其上读取或写入文件。

  

我想要一个实用程序,如果文件系统也有任何变化,它会通知我。

也许你想在这样一个挂载的文件系统上使用inotify(7)工具;那么问题与USB设备无关,对于它们上的SATA磁盘和文件系统也是如此;一些文件系统 - 特别是像NFS这样的远程文件系统 - 不能与inotify一起使用。

请注意,USB存储可以用作raw disk作为block device(即使通常不以这种方式使用)。在这种情况下,你的问题没有任何意义。此外,USB存储可能有几个 partitions,因此几个文件系统。您可能需要确定要处理的文件系统和分区。

您可能需要首先确定从USB存储中挂载的文件系统(例如,使用proc(5),或许/proc/mounts ...),然后再使用inotify查看它的变化。

  

如果我要从中添加或删除1 GB,是否有任何实用程序可以获得通知?

您将文件(通过inode(7) - s)添加到您的VFAT文件系统中(您无法在没有文件的情况下添加1Gb)。您可以使用df(1)来衡量其职业(您可以使用watch(1)crontab(5)来重复该措施)。您也可以使用inotifyincron command。您甚至可以使用ext4文件系统格式化USB磁盘,并使用disk quota设施。

您可能希望了解有关操作系统的更多信息。我强烈推荐Operating Systems: Three Easy Pieces。如果您对Linux上的C或C ++系统编程感兴趣,请阅读一些关于它的书(可能是旧的ALP或更新的),然后阅读intro(2)syscalls(2)