日志问题和 bash 脚本

Xpr*_*ers 2 debian logging debian-lenny

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

/var/log/
Run Code Online (Sandbox Code Playgroud)

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

df -h
Run Code Online (Sandbox Code Playgroud)

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

du --max-depth=1 -h
Run Code Online (Sandbox Code Playgroud)

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

#!/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
Run Code Online (Sandbox Code Playgroud)

它工作了几天,但在那之后日志再次填充硬盘。

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

  1. 当我从服务器硬盘中删除文件时,无需重新启动即可释放
  2. 日志应该在特定范围内。就像特定大小的文件一样,旧数据会被新数据覆盖

Ign*_*ams 7

  1. 单独删除日志文件无济于事。您需要告诉守护程序关闭日志文件,通常是通过向它发送一个 SIGHUP。
  2. logrotate 应该处理日志,它可以使用各种标准来确定何时应该轮换日志。
  3. 你的日志填得非常快。要么弄清楚是什么淹没了您的日志,将您的日志发送到另一台机器进行处理和存储,或者在 /var/log 上安装一个单独的卷,以便它成为唯一受影响的卷。