Linux

如何每天檢查硬碟可用空間,如果低於1GO刪除文件

  • May 29, 2018

我需要製定一個計劃的任務:每天檢查硬碟上的可用空間,如果此條件得到驗證,則刪除文件:Available < 1Go。

這是我編寫但似乎不起作用的腳本:

var="df -h | sed -n 2p |awk '{ print $4 }' "
if[var&lt;15];then
./bin/dss stop
rm -rf tmp/*
rm -rf caches/*
./bin/dss start
fi

我還沒有做 crontab 部分。

試試下面的程式碼。

#!/bin/bash
var=$(df -h | sed -n 2p |awk '{ print $4 }')
if [ "${var}" le "15" ]
then
./bin/dss stop
rm -rf tmp/*
rm -rf caches/*
./bin/dss start
fi

我強烈建議不要解析df輸出。

如果您stat從 GNU coreutils 獲得,您可以通過以下方式獲取非 root 使用者可用的空閒塊數

stat  -f /mountpoint -c '%a'

塊大小由

stat -f /mountpoint -c '%S'

並且條件可以簡潔地寫為:

[ `stat  -f /mountpoint -c '%a'` -lt 262144 ] && do_your_stuff

(假設塊大小為 4096,1 GB 為 1073741824 字節 - 即 1073741824/4096)

至於刪除(文件,根據問題),可能最安全的方法是:

find /directory -type f -print0 | xargs -0 -r rm -f

甚至更好:

find /directory -type f -delete

使用rm -f /something/*只是自找麻煩。

引用自:https://unix.stackexchange.com/questions/445955