如何使du命令抛出输入/输出错误



如何使du命令抛出input/output error。出于某种原因,我想要重现这个用例,并希望在将更改推送到生产环境之前验证我的修复。我无法理解如何重现这个用例。我尝试了很多方法,但都不成功。任何其他命令也可以抛出文件系统的输入/输出错误。

du -sh /data/
du: cannot access '/data/': Input/output error

错误信息显示为EIO。手册页说

EIO    Input/output error (POSIX.1-2001).
反过来,POSIX说:

输入/输出错误。发生了一些物理输入或输出错误。在对同一文件描述符进行后续操作时可能会报告此错误。在同一文件描述符上的任何其他导致错误的操作都可能导致[EIO]错误指示丢失。

,这给你留下了什么印象?那么,您需要以某种方式模拟du从系统调用接收EIO。您应该能够使用strace使任意系统调用返回EIO,但是哪一个呢?

首先在strace下运行du,看看哪些系统调用可能返回EIO。fstat(2)在Linux上不返回EIO,所以它一定是另一个系统调用。

最新更新