0

0

如何管理Linux系统日志 /var/log目录结构与日志轮转

P粉602998670

P粉602998670

发布时间:2025-08-03 14:59:01

|

737人浏览过

|

来源于php中文网

原创

/var/log 的管理需从结构、轮转、清理和监控四方面入手。首先,其核心目录包括 messages/syslog(系统日志)、auth.log/secure(认证日志)、dmesg(硬件检测)、kern.log(内核日志)、cron(定时任务)、boot.log(启动日志)、httpd/nginx(web 服务日志)及 apt/yum.log(软件包记录),便于问题定位;其次,使用 logrotate 配置日志轮换,如 daily(每日轮换)、rotate(保留天数)、compress(压缩)、notifempty(空文件不轮换)、create(权限设置)、postrotate(重载服务)等参数控制日志大小与保留周期;再次,定期检查磁盘占用,通过 du -sh /var/log/* 查看,结合手动删除、调整 rotate 参数、限制日志类型或使用 tmpwatch 删除旧文件等方式清理日志;最后,日常运维应使用 tail -f 实时查看、journalctl 查 systemd 日志、配置 cron 监控目录大小,并可接入 rsyslog + elk 进行集中分析。

如何管理Linux系统日志 /var/log目录结构与日志轮转

/var/log 是 Linux 系统中存放日志文件的核心目录,正确管理这个目录对系统维护和故障排查非常关键。它不仅影响磁盘空间使用,还关系到日志的可读性和安全性。以下从结构、轮转机制、清理策略几个方面讲讲怎么合理管理 /var/log。

如何管理Linux系统日志 /var/log目录结构与日志轮转

/var/log 目录常见结构与作用

Linux 的日志目录结构相对固定,不同发行版略有差异,但大部分核心文件位置一致:

如何管理Linux系统日志 /var/log目录结构与日志轮转
  • /var/log/messages/var/log/syslog:记录系统整体日志,包括启动信息、服务状态等。
  • /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(CentOS/RHEL):记录用户认证相关操作,比如登录尝试、sudo 使用等。
  • /var/log/dmesg:内核环缓冲区日志,主要用于查看系统启动时的硬件检测信息。
  • /var/log/kern.log:仅记录内核产生的日志。
  • /var/log/cron:定时任务执行日志。
  • /var/log/boot.log:系统启动过程的日志。
  • /var/log/httpd//var/log/nginx/:Web 服务器日志目录。
  • /var/log/apt//var/log/yum.log:软件包管理器操作记录。

这些日志有助于快速定位问题来源,比如看到登录失败频繁可以检查 auth.log,系统崩溃前的状态可以从 messages 或 syslog 中找线索。


日志轮转 logrotate 的基本配置

Linux 使用 logrotate 工具自动轮换日志文件,避免单个日志过大,同时支持压缩、保留周期等功能。

如何管理Linux系统日志 /var/log目录结构与日志轮转

logrotate 的主配置文件通常是

/etc/logrotate.conf
,而各服务有自己的子配置放在
/etc/logrotate.d/
下。

一个典型的日志轮转配置如下(以 nginx 为例):

/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        [ -f /run/nginx.pid ] && kill -USR1 `cat /run/nginx.pid`
    endscript
}

解释一下几个常用参数:

晓象AI资讯阅读神器
晓象AI资讯阅读神器

晓象-AI时代的资讯阅读神器

下载
  • daily:每天轮换一次。
  • rotate 14:保留最近 14 天的日志。
  • compress:旧日志用 gzip 压缩。
  • delaycompress:延迟一天再压缩,方便调试。
  • notifempty:日志为空时不轮换。
  • create:创建新日志文件并设置权限。
  • postrotate...endscript:在轮换后执行的操作,比如通知服务重载日志。

你可以通过手动运行

logrotate -vf /etc/logrotate.d/nginx
来测试配置是否正确。


清理旧日志与控制磁盘占用

即使有 logrotate,也有可能因为日志量大或者配置不当导致磁盘被占满。建议定期检查 /var/log 占用情况:

du -sh /var/log/*

清理旧日志的方法有几个:

  • 手动删除不必要的历史日志,例如一些调试日志或已经归档很久的压缩文件。
  • 调整 logrotate 配置中的 rotate 数值,减少保留天数。
  • 对于某些服务(如 MySQL、Nginx),可以在配置中限制访问日志的大小或关闭不需要的日志类型。
  • 使用 tmpwatch 或者 tuned 删除超过一定时间的文件,例如:
tmpwatch 72 /var/log/myapp/

这条命令会删除 /var/log/myapp/ 下 72 小时未修改的文件。

注意:不要随便删系统级日志,特别是涉及安全审计的文件,如 auth.log 或 secure。


日志查看与监控小技巧

除了管理结构和轮转,日常运维中还要会看日志:

  • 使用
    tail -f /var/log/syslog
    实时查看日志变化。
  • journalctl -u nginx.service
    查看 systemd 服务日志(适用于使用 systemd 的系统)。
  • 设置简单的 cron 定时任务,每天检查一次日志目录大小,及时预警。

如果系统日志很多,也可以考虑接入集中式日志管理工具,比如 rsyslog + ELK,把日志统一收集分析。


基本上就这些。合理组织 /var/log 结构、配置好 logrotate,并定期清理和监控,能有效避免日志引发的问题。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

663

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

246

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

281

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

514

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

253

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

386

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

529

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

599

2023.08.14

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

23

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.8万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 801人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号