Unix 如何在shell脚本中获得当前使用的剩余空间?
好的,我正在编写一个shell脚本,如果可用空间不足,则需要删除文件,但是我不知道如何检索剩余空间,以便考虑配额(如果设置了配额) 例如,我可以使用df命令,但是这似乎只检索文件系统的实际块使用情况,因此它将报告整个卷的总可用空间,即使用户的配额会阻止脚本使用如此多的空间 我是否可以使用命令来检索当前用户配额或卷的可用空间(以较低者为准)的最小剩余可用空间 [编辑] 好的,看来quota命令可以得到我需要的信息,现在的问题是从中获取所有可能返回值的有用数据。当在没有设置配额的情况下调用时,它将简单地返回“none”,这意味着我需要深入研究df以获得大小Unix 如何在shell脚本中获得当前使用的剩余空间?,unix,ssh,Unix,Ssh,好的,我正在编写一个shell脚本,如果可用空间不足,则需要删除文件,但是我不知道如何检索剩余空间,以便考虑配额(如果设置了配额) 例如,我可以使用df命令,但是这似乎只检索文件系统的实际块使用情况,因此它将报告整个卷的总可用空间,即使用户的配额会阻止脚本使用如此多的空间 我是否可以使用命令来检索当前用户配额或卷的可用空间(以较低者为准)的最小剩余可用空间 [编辑] 好的,看来quota命令可以得到我需要的信息,现在的问题是从中获取所有可能返回值的有用数据。当在没有设置配额的情况下调用时,它将简
是否有人可以帮助使用脚本查询quota-then-df(如果需要)以获得当前使用情况和最大块大小(按quota或volume,以最低/设置为准),以便我计算剩余空间量?您可以使用下面的命令查找文件系统的占用情况,请尝试一次,然后查看
df -k /*somedirectoryname
希望这有帮助。这是我最后想到的脚本;它应该相当可靠地返回文件系统的剩余空间(字节)或用户对同一文件系统的剩余配额。这并不是很快,因为查找正确的/dev/foo路径以用于
quota
比我希望的要复杂得多
#!/bin/sh
freespace_remaining() {
# Get remaining space on file-system
fs=$(df -k "$1" | tail -1)
free=$(echo "$fs" | awk '{ print $4 }')
let 'free *= 1024'
# Determine the device for the file-system
device=
mnt=$(echo "$fs" | awk '{ print $6 }')
if [ "$cached_mnt" != "$mnt" ]
then
cached_mnt="$mnt"
mnts=$(mount)
newmnt="$mnt"
# Try to get a root mount point (for encrypted folders etc.)
while [ -n "$newmnt" ]
do
newmnt=$(echo "$mnts" | grep " on $mnt " | awk '{ print $1 }')
[ "$newmnt" = "$mnt" ] && break
if [ -n "$newmnt" ]
then
device="$newmnt"
mnt=$(df "$newmnt" 2> /dev/null | tail -1 | awk '{print $6 }')
[ "$mnt" = "$device" -o "$mnt" = "$last" ] && break
last="$mnt"
fi
done
cached_device="$device"
fi
# Lookup the user's quota for the target device (if any is set)
quota=$(quota | grep "[\s]*$device")
# Return the lower of the two values as remaining space
if [ -n "$quota" ]
then
quota=$(echo "$quota" | awk '{ print $3 }')
used=$(echo "$quota" | awk '{ print $2 }')
let 'quota=(quota - used) * 1024'
[ "$quota" -lt "$free" ] && free="$quota"
fi
echo "$free"
}
freespace_remaining "$1"
希望它的工作原理足够清楚,只需传入一个路径作为第一个(也是唯一的)参数,它将返回剩余的自由空间,同时考虑当前用户的配额(如果有)。看起来您的问题已经有了答案,请按照下面的线程进行操作@圣何塞派似乎没有考虑配额。我想这是我以前尝试过的;它不报告包含配额的剩余空间,只返回整个卷的剩余空间。因此,如果有500gb的可用空间,那么这就是它的回报,即使我只有10gb的剩余配额。