Linux虚拟机日志管理操作指南
journalctl(Systemd系统专用)
Systemd是现代Linux发行版(如Ubuntu 16.04+、CentOS 7+)的默认初始化系统,journalctl是其集成的日志管理工具,可高效查看、过滤系统及服务日志。常用命令:
journalctl(支持翻页,按q退出);journalctl -u nginx;journalctl --since "2025-10-01" --until "2025-10-31";tail -f):journalctl -f;journalctl --vacuum-size=1G。传统日志文件查看
大多数Linux系统仍将日志存储在/var/log目录下,常见文件及用途:
/var/log/syslog//var/log/messages:系统一般日志(如启动信息、服务状态);/var/log/auth.log//var/log/secure:认证日志(如用户登录、sudo使用记录);/var/log/kern.log:内核日志(如硬件交互、驱动加载);/var/log/dmesg:内核环缓冲区日志(与dmesg命令输出一致)。cat /var/log/syslog(查看全部内容)、tail -f /var/log/auth.log(实时监控认证日志)、grep "error" /var/log/syslog(筛选错误信息)。dmesg命令(内核日志专用)
用于显示内核启动信息及与硬件设备的交互日志,适合排查硬件或驱动问题。常用选项:
dmesg;dmesg -w;dmesg -l err。日志轮转是控制日志文件大小的关键手段,常用工具为logrotate(多数Linux系统预装)。
默认配置查看
/etc/logrotate.conf(定义全局规则,如默认轮转周期、压缩方式);/etc/logrotate.d/目录下的子文件(如/etc/logrotate.d/rsyslog针对rsyslog服务)。自定义配置示例
若需为/var/log/myapp.log添加轮转规则,可在/etc/logrotate.d/下创建myapp文件,内容如下:
/var/log/myapp/*.log {
daily # 每日轮转
rotate 7 # 保留7个旧日志
missingok # 若日志不存在也不报错
notifempty # 若日志为空则不轮转
compress # 压缩旧日志(如.gz格式)
delaycompress # 延迟压缩(保留最近1个未压缩)
create 0640 root root # 创建新日志时设置权限及所有者
sharedscripts # 所有日志轮转完成后执行脚本
postrotate
/bin/kill -HUP $(cat /var/run/myapp.pid 2>/dev/null) 2>/dev/null || true # 通知应用重新打开日志文件
endscript
}
手动测试与自动运行
sudo logrotate -vf /etc/logrotate.conf(-v显示详细过程,-f强制轮转);logrotate通常通过cron每日自动执行(路径:/etc/cron.daily/logrotate),无需额外配置。清理旧日志归档
/var/log目录下的.gz(压缩)、.1(轮转后的旧日志)文件会随时间积累,可使用find命令批量删除:
.gz日志:sudo find /var/log/ -name "*.gz" -type f -mtime +30 -delete;*.1、*.old):sudo find /var/log/ -name "*.1" -o -name "*.old" -type f -mtime +7 -delete。清空大日志文件
若日志文件过大(如/var/log/syslog超过10GB),可使用truncate命令清空内容(不会删除文件本身,避免应用无法写入):
sudo truncate -s 0 /var/log/syslog(-s 0表示将文件大小设置为0字节)。
使用journalctl清理系统日志
journalctl --vacuum-size=200M;journalctl --vacuum-time=7d;journalctl --vacuum-time=1s。命令行分析
grep -c "error" /var/log/syslog;journalctl -u nginx | grep -c "error";grep -oP "(?<=\d{1,3}\.\d{1,3}\.\d{1,3}\.)\d{1,3}" /var/log/apache2/access.log | sort | uniq -c | sort -nr(统计访问IP频率)。ELK Stack(可视化分析)
适用于大规模日志分析,由Elasticsearch(存储与检索)、Logstash(收集与处理)、Kibana(可视化)组成。基本流程:
/var/log/syslog)并发送至Elasticsearch;auditd(安全审计)
用于监控系统安全事件(如文件修改、用户登录、权限变更),适合安全合规场景。常用操作:
sudo apt install auditd(Ubuntu/Debian)、sudo yum install audit(CentOS/RHEL);/etc/passwd文件的修改):sudo auditctl -w /etc/passwd -p wa -k passwd_changes(-w指定路径,-p指定权限(w=写、a=属性变更),-k设置关键字);ausearch -k passwd_changes;aureport -k(按关键字统计)。