有没有一种编程方式来确定Linux服务器上的可用磁盘空间?

我有一组Linux服务器,每台服务器都有一个带有/ tmp目录的本地硬盘驱动器。 有时,服务器上的/ tmp目录将填满并导致错误。 我想自动检查每个本地驱动器上的可用空间,以便在导致问题之前清除/ tmp。 有没有一个优雅的,编程的方式来确定Linux上的磁盘上的可用空间量? 我知道“古典”的答案是运行

df -h 

在每台服务器上(可能使用分布式shell工具,如dsh ),并编写脚本来parsing输出。 许多这样的脚本可以在网上find 。 我正在寻找一个更优雅的解决scheme,比如一个更新的磁盘实用程序,它返回结构化数据,或埋藏在/ proc文件系统中的一些信息。

DU命令使用statfs从安装的文件系统收集数据。 mount文件系统似乎是通过查看mtab文件来确定的。

 # strace du / ... open("/etc/mtab", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=793, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6fdd497000 read(3, "/dev/mapper/vg-root / ext"..., 4096) = 793 read(3, "", 4096) = 0 close(3) = 0 munmap(0x7f6fdd497000, 4096) = 0 stat("/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 statfs("/", {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=118071114, f_bfree=115631354, f_bavail=109633684, f_files=29990912, f_ffree=29574660, f_fsid={-611634627, -1860045897}, f_namelen=255, f_frsize=4096}) = 0 ... 

所以,如果你想连接的细节,你可以快速破解一个调用statfs / statvfs的python(或其他)脚本,然后以任何你喜欢的格式给你的信息。