当磁盘已满时使用 awk 执行 logrotate 命令

当磁盘已满时使用 awk 执行 logrotate 命令

我想做的是,当磁盘已满 90% 以上时,手动运行 logrotate。我尝试使用 df -P 和 awk 执行此操作。如果百分比 > 90,我可以让它显示百分比,但如果百分比 > 90,我不太清楚如何让 awk 运行 logrotate -f /etc/logrotate.d/。

以下是我目前所做的工作:

如果百分比 > 90,则打印百分比: df -P /dev/sda2 | tail -1 | awk '$5 > 90 {print $5}'

尝试运行 logrotate

  df -P /dev/sda2 | tail -1 | awk '$5 > 90 {system(logrotate -vf /etc/logrotate.d) /dev/sda2}'
  df -P /dev/sda2 | tail -1 | awk '$5 > 90 {logrotate -f}' 

我对这一切都不熟悉,所以如果能提供确切的命令,我将不胜感激。我的目的是将其放入 shell 脚本中,或作为每日 cron 作业的命令部分。

谢谢你的帮助,帕特里克。

答案1

你已经接近了:该system函数需要一个字符串

awk '$5 > 90 {system("logrotate -vf /etc/logrotate.d")}'

参考

相关内容