记录问题和 bash 脚本

记录问题和 bash 脚本

我在 rackspace 云托管上运行了 11 台 Debian 服务器。所有服务器都运行 VHCS2 进行托管管理。1 台服务器用于应用程序,10 台仅用于 smtp。我的问题是关于 smtp 服务器的。每台服务器托管 1 个域。我的问题是当我的客户端使用 smtp 时,此目录中会创建一个日志

/var/log/

但 24 小时内驱动器就满了,服务器拒绝所有 smtp 连接。然后我删除了日志并运行以下命令来检查磁盘空间。

df -h

但它显示硬盘仍然满了,服务器仍然拒绝 smtp 连接。然后我运行以下命令来查看真相

du --max-depth=1 -h

它显示了真相。实际使用的磁盘空间。然后我重新启动了服务器,现在服务器运行正常。但几个小时后又发生了同样的情况。然后我创建了以下脚本。

#!/bin/sh

rm -fr /var/log/*
rm -fr /var/log/apache2/*.log
rm -fr /var/log/apache2/*.log.*
rm -fr /var/log/apache2/users/*
rm -fr /var/log/apache2/backup/*

reboot

它工作了几天但之后日志再次填满硬盘。

现在我想要以下解决方案。 如果有人能帮助我。

  1. 当我从服务器删除文件时,硬盘将释放,而无需重新启动
  2. 日志应在特定范围内。例如,文件的特定大小,其中旧数据被新数据覆盖

答案1

  1. 仅删除日志文件是没有用的。您需要告诉守护进程关闭日志文件,通常是通过向其发送 SIGHUP 来实现的。
  2. logrotate应该处理日志,并且它可以使用各种标准来确定何时应该轮换日志。
  3. 您的日志已满可怕快。要么找出是什么淹没了你的日志,要么将你的日志发送到另一台机器进行处理和存储,要么在 /var/log 上安装一个单独的卷,这样它就会成为唯一受影响的卷。

答案2

您确实需要弄清楚哪些日志占满了磁盘。一旦您知道哪些日志是问题所在,就查看它们并查看它们为何增长得如此之快。

是否记录了太多信息?降低应用程序的日志记录级别。
是否记录了大量错误?调查并修复
。...

一旦您控制了日志,您就可以使用它们logrotate来帮助管理它们。

相关内容