AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 131393
In Process
apache
apache
Asked: 2010-04-12 08:00:11 +0800 CST2010-04-12 08:00:11 +0800 CST 2010-04-12 08:00:11 +0800 CST

如何在 bash 中以更少的开销查看磁盘使用情况?

  • 772
du -csh /

以上将花费大量时间来计算,有没有办法以更少的开销查看不太准确的结果?

更新

我想知道的是特定目录下的总大小。

disk-space-utilization bash
  • 13 13 个回答
  • 12586 Views

13 个回答

  • Voted
  1. Kyle Brandt
    2010-04-12T10:47:04+08:002010-04-12T10:47:04+08:00

    至于更优化的版本du,我不知道。想到的事情是:

    1. 将这些文件存储在 ram 磁盘或类似的东西上。
    2. 如果只有一个应用程序写入此文件夹及其子文件夹,则让应用程序保持跟踪。
    3. 如果所有这些文件的大小大致相同并且它们的数量均匀分布在目录中,您可以只计算子目录的数量并将其乘以每个目录的文件,然后再乘以每个文件的大小。如果您只有一个目录深层结构 ( stat -c '%h') - 2,则只需使用目录的硬链接计数即可快速完成此操作。
    4. 使所有这些文件归特定用户所有,并使用配额机制。
    5. 使用专用分区,只需使用 df。虚拟文件系统(通过回送挂载的文件系统上的文件)也可以做到这一点。

    在所有这些中,配额和专用分区选项可能是最简单和最有效的。

    • 9
  2. sysadmin1138
    2010-04-13T10:28:38+08:002010-04-13T10:28:38+08:00

    问题是“du”必须枚举子树中的每个对象。这是一个元数据密集型操作,对于大多数 Linux 文件系统来说需要一段时间。一些文件系统,NTFS 和 Novell 的 NSS 浮现在脑海中,能够在元数据中跟踪这样的目录大小,这使得该操作大大加快。通常,如果您的文件系统支持某种目录配额,则它必须在内部跟踪此数据以执行,每次大小更改都会在目录树上复制到配额点 (NTFS) 或每个目录 (NSS) ) 发生时,因此获取目录树大小非常快。

    不幸的是,没有办法让 du 跑得更快,只有变通方法。

    • 以批处理模式运行“du”并使用非实时结果
    • 创建一个新的文件系统并改用“df”
    • 创建一个包含您的目录的大文件,对其进行环回挂载,对其进行格式化,然后在新的挂载点上使用“df”。如果您需要更多空间,请卸载回送挂载、扩展文件并重新挂载。
    • 6
  3. David Rickman
    2010-04-12T09:56:53+08:002010-04-12T09:56:53+08:00
    du -h --max-depth=1
    

    为您提供当前工作目录中人类 KB/MB/GB 格式的大小。

    • 4
  4. Dan Andreatta
    2010-04-13T00:59:47+08:002010-04-13T00:59:47+08:00

    使用标准工具,每次您想知道总大小时,都必须获取目录中每个文件的大小。一种可能更有效的方法是拥有一个“目录大小监视器”,它跟踪目录的当前大小。没有这样的事情(据我所知),但你可以用inotify. 可能不使用 bash (和inotify-tools),但您可能可以使用 python 和 pyinotify,例如。

    • 3
  5. Dennis Williamson
    2010-04-12T12:21:47+08:002010-04-12T12:21:47+08:00

    您可能会发现gt5它很有用。它存储最新du信息,并在下次运行时对其进行比较。它使用文本模式浏览器(例如links.

    • 2
  6. Jason
    2010-04-13T08:58:08+08:002010-04-13T08:58:08+08:00

    另外,如果您这样做,请考虑 du -- "one file system" 上的 -x 选项

    du -xh / --max-depth=1 
    

    您只会在根分区上看到磁盘使用情况摘要,它不会尝试添加 /proc、/sys、/dev 等...

    • 2
  7. LA
    2010-04-13T10:35:09+08:002010-04-13T10:35:09+08:00

    如果您只希望根文件系统使用磁盘,那么

    df -h /

    • 2
  8. xenny
    2010-04-12T10:05:21+08:002010-04-12T10:05:21+08:00

    不可以。您能否定期对文本文件进行 du 管道传输,在设置为整夜运行的 cron 作业中,因此您没有立即可用的最新数据?

    请注意,在 Windows 下测量包含大量文件的文件夹使用的磁盘空间同样需要一些时间。

    • 1
  9. Antoine Benkemoun
    2010-04-12T08:09:27+08:002010-04-12T08:09:27+08:00

    df -h 可以解决问题

    • 0
  10. The Unix Janitor
    2010-04-12T08:09:44+08:002010-04-12T08:09:44+08:00

    df -kh /

    这将向您显示已使用和可用的磁盘空间量。

    • 0

相关问题

  • 确定 inode 使用的位置

  • 是否有显示磁盘管理 MMC 等信息的内置 Windows 实用程序?

  • 为什么 AppData\Roaming 文件夹在 Vista x64 上会占用如此多的磁盘空间?

  • 在 Windows(XP、Vista)中显示实时磁盘使用情况的工具 [关闭]

  • Win2k3:可以从系统驱动器中删除哪些文件,以及删除它们的工具是什么?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve