[英]Treat tmpfs as a device for grep
我必须测试我的程序,它从磁盘中完全删除文件及其内容。 为了测试我执行以下操作:
$ grep -a -o -c 'some_string_to_be_found' /dev/sda1
该测试实际上按预期工作(如果我手动删除文件,则会找到字符串,如果我的程序删除它,则不会)。
问题是磁盘大小可能很大,因此完成测试需要大量时间。 此外,磁盘的标签在不同的机器上可能会有所不同。
因此我考虑如何改用虚拟文件系统。 使用 tmpfs 在 RAM 中创建磁盘:
pc:/mnt$ mkdir tmpfs
pc:/mnt$ chmod 777 tmpfs/
pc:/mnt$ mount -t tmpfs -o size=50M tmpfs /mnt/tmpfs/
创建/填充/删除一个文件,然后尝试使用以下内容查找其内容:
$ grep -a -o -c 'some_string_to_be_found' /dev/tmpfs
问题是它导致
grep: /dev/tmpfs: 没有那个文件或目录
所以问题是:是否可以将 tmpfs 用作设备,或者读取为虚拟文件系统分配的原始内存?
尽管我还没有找到如何将tmpfs
视为设备的方法,但有一种方法可以解决上述我的任务(可能对某人有用)。
我们将文件视为设备。 算法如下:
创建一个指定大小的空文件:
# touch storage_file # truncate -s 10M storage_file
在该文件中创建一个文件系统:
# mkfs.ext4 storage_file
现在我们可以从该文件创建一个设备并将其挂载为普通磁盘:
# losetup /dev/loop0 storage_file # mkdir /mnt/loopfs # mount -o loop /dev/loop0 /loopfs
就这样。 我们能够将文件视为设备。 创建/删除其中的任意文件/目录。 并且通过/dev/loop0
grep
按预期工作, /dev/loop0
处理整个物理存储设备,仅在storage_file
内爬行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.