我想在 Linux 中清除服务器日志,而无需重新启动服务器,这样就不会出现内存不足的问题。我听说 > filename 可以做到这一点,但内容存储在其他内存中。所以我不认为该命令会减少内存?有没有办法清除日志文件。
答案1
关于清除或减少系统日志,听起来像“日志轮换”(通常用 处理logrotate
)。有关更多信息,请参阅此面向 Ubuntu 的帮助页面:https://help.ubuntu.com/community/LinuxLogFiles#Log_Rotation
在查看 /var/log 或其任何子目录中的目录列表时,您可能会遇到名称为 daemon.log.0、daemon.log.1.gz 等的日志文件。这些日志文件是什么?它们是“轮换”日志文件。也就是说,它们会在预定义的时间段后自动重命名,并开始新的原始日志。经过更多时间后,日志文件会使用 gzip 实用程序进行压缩,例如示例 daemon.log.1.gz。日志轮换的目的是存档和压缩旧日志,以便它们占用更少的磁盘空间,但仍可在需要时进行检查。什么处理此功能?
logrotate
当然是命令!通常,logrotate 是从系统范围的 cron 脚本 /etc/cron.daily/logrotate 调用的,并由配置文件 /etc/logrotate.conf 进一步定义。可以将单个配置文件添加到 /etc/logrotate.d(例如,apache2 和 mysql 配置存储在其中)。本指南不会介绍配置 logrotate 以处理 Ubuntu 系统上任何日志文件的自动轮换的各种方法。有关更多详细信息,请查看资源本指南的部分。
笔记:您也可以通过 cron.daily 脚本 /etc/cron.daily/sysklogd 轮换系统日志文件,而不是使用 logrotate。实际上,实用程序 savelog 可能会在日志轮换上产生意外结果,而配置 logrotate 似乎对此没有影响。在这些情况下,您应该检查 /etc/cron.daily/sysklogd 中的 cron.daily sysklogd 脚本,并阅读 savelog 手册页,看看 savelog 实际上是否没有以您指定的方式进行轮换
logrotate
。
或者,您可以直接删除它们...rm
等等...