如何在 Bash 中获取当前的可用磁盘空间?
Posted
技术标签:
【中文标题】如何在 Bash 中获取当前的可用磁盘空间?【英文标题】:How to get the current free disk space in Bash? 【发布时间】:2014-01-31 22:48:10 【问题描述】:我正在运行一些经常占用我的磁盘空间的操作。出于这个原因,我希望我的计算机在磁盘空间低于 2GB 时发出声音。我知道我可以通过运行df -h
获得列出可用磁盘空间的输出:
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1 112Gi 100Gi 12Gi 90% 26291472 3038975 90% /
devfs 191Ki 191Ki 0Bi 100% 663 0 100% /dev
map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home
但我不能在 if-then 语句中使用此输出,以便在可用可用空间低于 2GB 时播放声音。
有人知道我怎样才能只获得可用空间而不是这个完整的输出吗?
【问题讨论】:
【参考方案1】:这是我能够获得可用磁盘空间量的唯一可移植方式(Linux 和 Mac OS):
df -Pk . | sed 1d | grep -v used | awk ' print $4 "\t" '
请注意,Linux 中的df
不同于 Mac OS (OS X) 中的df
,它们只共享有限数量的选项。
这将返回以千字节为单位的可用磁盘空间量。不要尝试使用不同的度量,因为它们的选项不可移植。
【讨论】:
【参考方案2】:首先,可用磁盘空间取决于您正在处理的分区/文件系统。以下命令将打印当前文件夹中的可用磁盘空间:
TARGET_PATH="."
df -h "$TARGET_PATH" | awk 'NR==2print $4'
TARGET_PATH
是您要写入的文件夹。 df
自动检测文件夹所属的文件系统。
【讨论】:
从df
中删除-h
选项会有所帮助:df . | awk 'NR==2if($4<=2*1024*1024) print "Available space < 2 GB\a"'
哦,是的。我没有看到> 2GB
限制。
甚至$ df --output=avail . | awk 'NR==2 && $0 <= 2 * 2**20 print "Available space <= 2 GB\a" '
。【参考方案3】:
#!/bin/bash
Check_space()
set -e
cd
Home=$PWD
reqSpace=100000000
SPACE= df "$Home"
if [[ $SPACE -le reqSpace ]]
then
$SPACE
echo "Free space on "
fi
Check_space
【讨论】:
虽然此代码可以回答问题,但提供有关 如何 和/或 为什么 解决问题的附加上下文将改善答案的长期价值。以上是关于如何在 Bash 中获取当前的可用磁盘空间?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 swift 2.0 中使用 AttributesOfFileSystemForpaths 获取总磁盘空间和可用磁盘空间