我是 Linux 新手,但我即将开始使用 VPS 来托管我的网站。我一直在阅读有关内容,有人提到我需要确保所有日志都进行旋转和压缩,但我不明白如何做到这一点。我将使用 Plesk,但我知道它只会覆盖一些日志,那么如何确保我的所有日志都已轮换?有没有比使用 grep/cat 更简单的方法来查看它们?
答案1
为了充实八比特托尼所指出的内容logrotate
:
logrotate
是一个可以从命令行运行的独立程序。主要文档是手册页 ( man logrotate
),其中有一个关于格式的部分配置文件。没有默认的配置文件;必须指定它。通常 logrotate 是通过 运行的cron
,因此您会在 cron 配置中找到对它的引用(以及显式的 logrotate 配置文件)。在 Fedora 衍生的东西(例如 CentOS)上,它可能是/etc/logrotate.conf
.然而,logrotate 也允许使用include
指令。您会在手册页的配置文件部分注意到(在“这里是有关 logrotate 配置文件中可能包含的指令的更多信息”下):
包括[文件或目录]
读取作为参数给出的文件,就好像它是内嵌包含在包含指令出现的地方。如果给定了目录,则在继续处理包含文件之前,将按字母顺序读取该目录中的大多数文件。唯一被忽略的文件是非常规文件的文件(例如目录和命名管道)以及名称以禁忌扩展名之一结尾的文件,如 tabooext 指令所指定的。
这是很有趣的,因为指令可以相互取代(矛盾和覆盖),并且它们是内联处理的;从该部分的开头:“每个配置文件都可以设置全局选项(本地定义覆盖全局选项,后面的定义覆盖之前的定义)”,因此如果您包含一个文件然后与其中的指令相矛盾,则最后一个指令获胜。习惯阅读手册页!他们是你的朋友!
如果你看看你的/etc/logrotate.conf
,你可能会发现这样一行;
include /etc/logrotate.d
并且/etc/logrotate.d
将是一个目录。这允许各个应用程序在那里添加文件,以便可以适当地轮换其各个日志。显然,您可以添加自己的并修改您想要的任何内容。
如果您最初发现手册页有点密集,可以参考 logrotate 教程。这是一个很棒的工具。最简单的事情就是设置一个实验性的conf文件默认目录之外您可以通过在命令行上指定来运行。让它指的是特定的东西,这样你在实验时就不会造成混乱,而且你应该能够掌握事情是如何运作的。
请注意,您不必通过 cron 运行 logrotate;您可以手动或通过其他方法执行此操作,具体取决于您喜欢如何管理服务器。
答案2
对于常见的日志文件格式,许多 Linux 发行版默认都包含日志轮换。我对 CentOS 不太了解,无法判断是否包含它,但配置通常在/etc/logrotate*
(例如/etc/logrotate.conf
和/或/etc/logrotate.d/
)中
因此,如果您谈论的是基本日志文件,它们可能已经得到满足。 Logrotate 通常将旋转的(以及可选压缩的)日志保留在创建它们的原始目录中(当然,每个日志各不相同),大多数操作系统日志都可以在 /var/log 中找到(在许多发行版上)。
具有包管理器和人员打包软件的 Linux 发行版通常确保当您安装具有日志的内容时,新条目会放置在相关的 logrotate 位置。这是您通过 Linux 发行版“获得”的东西之一,而仅通过下载和编译源代码是无法获得的。这不是一个保证,一些打包软件没有它,但它比没有更常见。
如果您想报告日志(您不想阅读全部日志),那么您需要查看解决方案,例如logwatch
CentOS 中包含的解决方案。它可以配置为通过邮件向您发送服务器上所有常规日志文件的每日报告和摘要。
对于一到两台服务器来说还可以,但是如果你有六台或更多服务器,此时你需要其他东西,那就太难以处理了。