用于每日磁盘使用情况报告的 Shell 脚本

用于每日磁盘使用情况报告的 Shell 脚本

我正在本地驱动器上进行备份。驱动器安装在 /media 文件夹中。现在我想每天运行一个 cron 作业,它会以​​表格形式告诉我某些文件夹使用了多少磁盘空间以及驱动器上还剩下多少可用空间。

如果我可以将该信息插入数据库并且可以通过 locahost 上的网页查看该信息,那就太好了。

我正在使用 Ubuntu 10.04。

答案1

此单行代码将列出执行目录中的顶级目录,并按 MB 排序打印其大小。您可以根据自己的喜好进行调整。

for d in $(find . -maxdepth 1 -type d); do du -sm $d; done | sort -nk 1

简单的调整,

  1. find /dir/path-- 将对指定目录执行此操作
  2. du可以以其他形式使用,这个是在 MB 中做摘要
  3. 如果您的目录中有空格字符,您可以在前面加上,
    (如进一步清理Dennis;感谢您的提示)
    IFS=$'\n';
    我不知何故习惯于精确过滤而不是通配符;丹尼斯有更多的想法
  4. 您可以使用sort -nrk 1按大小降序对输出进行排序
  5. 我忘了添加-mindepth 1,当你添加它时,它将跳过在结果中
    显示基本目录(等)的大小/dir/path

这里的其他答案可能会让您很好地了解如何将其存储到数据库中并显示在网页上。我本来会将其转换为 CSV 文件,并在浏览器中列出带有文件路径的摘要(但这可能不太适合长期存储和查看大量数据)。

[meta,编辑查询:当我编辑此答案时,第四项显示4在预览中,
1在实际视图中显示。有人知道我在这个 markdown 中遗漏了什么吗?;
当我删除第 3 点中的换行符时,这个问题得到了修复,
您需要查看早期的修订版才能明白我的意思……]


更新基本内容(根据您的评论):

  1. 看着使用终端用于 Ubuntu 的命令行处理
  2. 一旦启动了终端,
    请更改为感兴趣的目录(尝试一些示例目录),
    (例如您的 Firefox 配置文件-- cd ./mozilla
    ,并且不要在该目录中尝试太多东西,否则可能会破坏您的浏览器。
  3. 现在从上面复制第一个 for 循环行并将其粘贴到该终端的命令提示符上
  4. 按下Enter
  5. 查看输出
  6. 另一个关于如何使用命令行进行“脚本编写”的参考资料,
    Bash Shell 教程超级用户

告诉我们您想要获得哪个级别的细节。

答案2

如果你想要将分区上的空间作为表,你可以简单地调用

df -h | column -t

将其添加到包含您的电子邮件地址的 crontab 中。df -h | column -t

答案3

为了获得漂亮的列式输出,请使用 POSIX 输出格式,以避免在使用 pts/? 进行远程会话时空间受限。

df -hP | 列 -t

相关内容