du 命令同时给出错误和结果

du 命令同时给出错误和结果

我想知道我的 VPS 的磁盘空间,尽管文件夹du工作正常

$ du -sh /home/
325M    /var/

但试图获得整个 vps 却给了我这个结果。

[root@user/]# du -sh
du: cannot access `./proc/18097/task/18097/fd/4': No such file or directory
du: cannot access `./proc/18097/task/18097/fdinfo/4': No such file or directory
du: cannot access `./proc/18097/fd/4': No such file or directory
du: cannot access `./proc/18097/fdinfo/4': No such file or directory
1.3G    .

我假设空间是1.3G,但是为什么会出现错误?我如何解决它?

答案1

你不需要修复它——它没有坏。这些是对不可用的内核文件对象的引用du- 这是涉及文件描述符的常见竞争条件。无论如何,这些不占用空间(也没有/proc就此而言,也没有)因为它们不在磁盘上 - 它们只是对内核文件描述符的临时引用。他们要么引用匿名管道/套接字- 因此无法,stat因为它们没有文件名 - 或者在du注意到它们的时间和尝试它们的时间之间stat,它们要么已不复存在,要么du从一开始就没有权限这样做。它们很可能是du自己的文件描述符。

但是,您的命令可能存在问题,因为它处理多个文件系统挂载。这可能不是您的意图,因此您可以使用:

du -shx

...仅寻址当前工作目录的根挂载上存在的文件。因为/proc它是一个完全独立的文件系统,并且单独安装以/运行该文件系统,从而/排除/proc所有其他不属于的文件系统。

另外,如果您确实想要列出多个文件系统挂载,您可以这样做:

du -sh 2>/dev/null

相关内容