【问题标题】:How to get the current free disk space in Bash?如何在 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 时播放声音。

有人知道我怎样才能只获得可用空间而不是这个完整的输出吗?

【问题讨论】:

    标签: bash if-statement diskspace


    【解决方案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==2{print $4}'
      

      TARGET_PATH 是您要写入的文件夹。 df 自动检测文件夹所属的文件系统。

      【讨论】:

      • df 中删除-h 选项会有所帮助:df . | awk 'NR==2{if($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
      

      【讨论】:

      • 虽然此代码可以回答问题,但提供有关 如何 和/或 为什么 解决问题的附加上下文将改善答案的长期价值。
      猜你喜欢
      • 2015-06-30
      • 2011-12-27
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      • 2012-11-15
      • 1970-01-01
      • 2020-05-03
      相关资源
      最近更新 更多