0

下面是我需要为其创建 bash 脚本的高级场景。

  • 服务器上的目录- /sasdata2/SAS-USERS/PBU/
  • 上述目录的大小不应超过 8 TB
  • 如果大小超过 8 TB,则需要在“创建/修改”日期之前删除最旧的文件,以将大小恢复到 8 TB。
  • 此主目录中有几个子目录,但不应从子目录中删除任何内容。只能删除主目录中的文件。

下面是我正在使用的脚本,但它在 while 语句中进入无限循环。在为上述场景制作脚本时需要您的帮助。

while [ "$(du -shb /sasdata2/SAS-USERS/PBU | awk '{print $1}')" -gt 900 ]
do
  find /sasdata2/SAS-USERS/PBU -maxdepth 0 -type f -printf '%T@\t%p\n' | \
  sort -n | head -n 25 | cut -d $'\t' -f 2-  | xargs -d '\n' rm -f
done
4

1 回答 1

1

我认为你的 while 条件是错误的。du -b 会给你字节,为什么要和 900 相比呢?

另外,为什么你需要在 du 上循环并删除任意 25 个文件?用 du 计算超过 8TB 的字节数,然后 ls -ltr 并在循环中删除文件并将它们的大小相加,直到达到超过字节

于 2016-02-16T08:43:25.240 回答