Linux系统的日志文件记录了系统运行、服务状态、用户操作等各类关键信息,是排查故障、监控系统状态的核心依据。做好日志文件管理,既能避免日志占满磁盘空间,也能在需要时快速定位问题。

Linux常见日志文件类型
Linux系统的日志文件主要存放在/var/log目录下,不同类型的日志对应不同的系统和应用场景,常见类型如下:
- 系统通用日志:
/var/log/messages记录系统全局性的通用信息,包括服务启动、内核提示等,是排查系统问题最常用的日志文件。 - 认证相关日志:
/var/log/secure记录用户登录、权限验证、sudo操作等安全相关信息,可用于排查非法访问问题。 - 服务专属日志:多数服务会在
/var/log下创建独立子目录存放日志,例如/var/log/nginx存放Nginx服务日志,/var/log/mysql存放MySQL数据库日志。 - 内核日志:
/var/log/dmesg记录系统启动时内核的检测输出信息,也可通过dmesg命令实时查看。
主流日志管理服务
rsyslog服务
rsyslog是Linux系统中传统的日志收集服务,默认在多数Linux发行版中安装运行,它负责接收系统内核、各类服务产生的日志,按照预设规则将日志写入对应的文件。可以通过修改/etc/rsyslog.conf主配置文件或/etc/rsyslog.d/目录下的子配置文件,自定义日志的存储规则。
例如以下配置可以将所有级别为info及以上的日志,除了邮件相关的日志,都写入/var/log/messages文件:
# 规则格式:设备.优先级 日志存储路径 *.info;mail.none;authpriv.none;cron.none /var/log/messages
systemd-journald服务
systemd-journald是systemd体系自带的日志服务,它收集系统启动、服务运行、内核等所有日志,默认将日志存储在二进制文件中,不会自动生成传统的文本日志文件。可以通过journalctl命令查看和管理这些日志。
常用journalctl操作示例如下:
# 查看所有日志 journalctl # 查看最近20条日志 journalctl -n 20 # 查看指定服务(如nginx)的日志 journalctl -u nginx # 查看指定时间段的日志,例如查看今天的所有日志 journalctl --since today
日志轮转工具logrotate
日志文件会持续增大,如果不做处理很容易占满磁盘空间,logrotate是Linux系统自带的日志轮转工具,可以自动完成日志的切割、压缩、删除、归档操作,默认每天执行一次,配置文件位于/etc/logrotate.conf,自定义轮转规则可以放在/etc/logrotate.d/目录下。
以下是一个Nginx访问日志的轮转配置示例:
/var/log/nginx/access.log {
daily # 每天轮转一次
rotate 7 # 保留最近7个轮转后的日志文件
compress # 轮转后的日志文件进行gzip压缩
delaycompress # 延迟压缩,下次轮转时再压缩上一次的日志
missingok # 如果日志文件不存在,不报错继续后续操作
notifempty # 如果日志文件为空,不进行轮转
create 0644 nginx nginx # 轮转后创建新的日志文件,权限0644,属主属组为nginx
postrotate # 轮转后执行的命令,这里重载nginx让服务写入新的日志文件
systemctl reload nginx > /dev/null 2>&1
endscript
}
常用日志管理操作
日志查看与过滤
查看日志文件最常用的命令是tail和grep,可以快速定位需要的内容:
# 实时查看/var/log/messages的最后10行新增内容
tail -f /var/log/messages
# 过滤/var/log/secure中包含Failed字样的日志,排查登录失败记录
grep "Failed" /var/log/secure
# 查看最近1小时内的nginx错误日志
find /var/log/nginx/error.log -mmin -60 -exec cat {} ;
日志清理
如果需要手动清理过期日志,首先要确认日志对应的服务已经停止写入或者轮转规则已经生效,避免直接删除正在写入的日志文件导致服务无法正常记录日志。可以通过truncate命令清空日志内容而不是删除文件:
# 清空/var/log/messages的内容,保留文件本身 truncate -s 0 /var/log/messages
如果是已经轮转完成的旧日志文件,确认不再需要后可以直接删除:
# 删除/var/log/nginx目录下30天前修改过的压缩日志文件 find /var/log/nginx -name "*.gz" -mtime +30 -delete
日志管理注意事项
- 不要随意修改系统默认的日志存储路径和权限,避免日志服务无法正常写入日志。
- 配置logrotate轮转规则时,要先在测试环境验证规则的正确性,避免错误规则导致日志丢失。
- 重要系统的日志建议定期备份到其他存储设备,避免本地磁盘故障导致日志丢失无法排查问题。
- 对于生产环境的服务日志,可以根据业务需求设置合理的轮转周期和保留数量,平衡存储占用和问题排查需求。
Linux日志文件管理logrotatersyslogsystemd_journald修改时间:2026-07-09 02:09:12