代码之家  ›  专栏  ›  技术社区  ›  pix0r

get`df`显示freebsd的更新信息

  •  0
  • pix0r  · 技术社区  · 16 年前

    我最近在FreeBSD服务器上的驱动器上磁盘空间不足。我截断了导致问题的文件,但没有看到运行时反映的更改 df . 当我奔跑 du -d0 在分区上,它显示正确的值。有没有办法强制更新这些信息?什么导致这里的输出不同?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Stephen Darlington    16 年前

    这可能集中在 怎样 您截断了文件。 东风 报告不同的事情 this post on unix.com explains . 仅仅因为没有使用空间并不一定意味着它是自由的…

        2
  •  3
  •   Dave C    15 年前

    在BSD中,目录条目只是对底层文件数据(称为inode)的众多引用之一。使用rm(1)命令删除文件时,只会减少引用计数。如果引用计数仍然为正数(例如,由于符号链接,文件具有其他目录条目),则不会删除基础文件数据。

    较新的BSD用户通常不会意识到打开文件的程序也在保存引用。防止在进程使用基础文件数据时丢失。当进程关闭文件时,如果引用计数为零,则文件空间将标记为可用。此方案用于避免Microsoft Windows类型问题,因为某些未指定的程序仍将文件打开,因此该方案不允许删除文件。

    观察这一点的一个简单方法是执行以下操作

    cp /bin/cat /tmp/cat-test
    /tmp/cat-test &
    rm /tmp/cat-test
    

    在后台进程终止之前,/tmp/cat test使用的文件空间将保持分配状态,并且不可用,正如df(1)报告的那样,但是du(1)命令将无法解释它,因为它不再具有文件名。

    注意,如果系统崩溃而进程没有关闭文件,那么文件数据仍然存在,但没有被引用,那么需要运行fsck(8)来恢复文件系统空间。

    保持文件打开的进程是newsyslog(8)命令向syslogd或其他日志程序发送信号的原因之一,通知它们应该关闭日志文件,并在日志文件旋转后重新打开。

    软更新还可以影响文件系统的空闲空间,因为实际的inode空间恢复可以延迟;可以使用sync(8)命令来鼓励这种情况更快发生。

        3
  •  -1
  •   mercutio    16 年前

    df——同步工作吗?