写个shell脚本实现当/var/log目录大于50G后自动清理这个目录下数字开头的文件或目录
时间: 2024-01-16 10:05:14 浏览: 93
可以使用以下的shell脚本来实现这个需求:
```bash
#!/bin/bash
log_dir="/var/log"
max_size="50G"
current_size=$(du -sh $log_dir | awk '{print $1}')
if [[ $current_size > $max_size ]]; then
echo "Log directory size exceeds $max_size. Cleaning up..."
find $log_dir -type f -name '[0-9]*' -delete
find $log_dir -type d -name '[0-9]*' -exec rm -rf {} +
echo "Cleanup complete."
else
echo "Log directory size is within limits."
fi
```
这个脚本会首先获取 `/var/log` 目录的当前大小,并与设定的最大大小进行比较。如果当前大小超过最大大小,则会使用 `find` 命令找到目录下以数字开头的文件和目录,并将其删除。最后,会输出清理完成的消息。
你可以将以上代码保存为一个名为 `cleanup_logs.sh` 的文件,然后给予执行权限 (`chmod +x cleanup_logs.sh`)。之后,可以定期执行该脚本,比如使用 cron job 或者其他定时任务工具,以自动清理 `/var/log` 目录。
请注意,这个脚本会永久性地删除匹配到的文件和目录,请务必谨慎操作。另外,如果你使用的是非root用户执行脚本,可能需要确保用户对 `/var/log` 目录有足够的权限来进行删除操作。
阅读全文