菜鸟科技网

Linux查看日志文件常用命令有哪些?

在Linux系统中,日志文件是记录系统运行状态、应用程序行为以及用户操作的重要数据源,通过查看日志文件可以快速定位问题、排查故障和分析系统性能,Linux提供了多种命令用于查看日志文件,这些命令各有特点,适用于不同的场景,以下将详细介绍常用的日志查看命令,包括基本用法、高级选项及实际应用案例。

Linux查看日志文件常用命令有哪些?-图1
(图片来源网络,侵删)

基础日志查看命令

  1. cat命令
    cat命令用于查看整个文件内容,适用于小型日志文件的快速浏览,查看/var/log/syslog,可以使用命令:

    cat /var/log/syslog

    若需分页显示,可结合moreless命令:

    cat /var/log/syslog | more

    缺点:对于大文件,cat会一次性加载全部内容,可能导致终端卡顿。

  2. less命令
    less是交互式文件查看器,支持分页、搜索和上下滚动,适合大文件查看。

    Linux查看日志文件常用命令有哪些?-图2
    (图片来源网络,侵删)
    less /var/log/auth.log

    常用操作

    • q退出
    • n跳转到下一个匹配项
    • g跳转到文件开头,按G跳转到文件末尾
  3. more命令
    moreless类似,但功能较少,仅支持向下分页,无法向上滚动,使用方法:

    more /var/log/kern.log

    适用场景:仅需单向浏览文件内容时。

实时监控日志命令

  1. tail命令
    tail用于查看文件末尾内容,常用于实时监控日志更新,基本用法:

    Linux查看日志文件常用命令有哪些?-图3
    (图片来源网络,侵删)
    tail -f /var/log/nginx/access.log

    常用选项

    • -n:指定显示行数,如tail -n 100 /var/log/syslog显示最后100行。
    • -F:自动检测文件是否被重命名或重建,适合监控日志轮转文件。
  2. head命令
    headtail相反,用于查看文件开头内容,查看日志文件前50行:

    head -n 50 /var/log/mysql/error.log

日志过滤与分析命令

  1. grep命令
    grep用于从日志中过滤特定关键词,结合正则表达式可实现复杂匹配,过滤syslog中包含error的行:

    grep "error" /var/log/syslog

    常用选项

    • -i:忽略大小写,如grep -i "warning" /var/log/auth.log
    • -c:统计匹配行数,如grep -c "failed" /var/log/secure
    • -A/-B:显示匹配行及前后几行,如grep -A 3 "panic" /var/log/kern.log
  2. awk命令
    awk是强大的文本处理工具,支持按列提取和计算,提取access.log中的IP地址和访问状态码:

    awk '{print $1, $9}' /var/log/nginx/access.log

    高级用法:统计每个IP的访问次数:

    awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
  3. sed命令
    sed用于流编辑,可实现日志内容的替换、删除等操作,删除日志中包含临时文件的行:

    sed '/tmp/d' /var/log/app.log > /var/log/app_clean.log

系统日志管理工具

  1. journalctl命令
    journalctl是systemd的日志查询工具,适用于CentOS 7、Ubuntu 16.04及更高版本。

    • 查看系统日志:journalctl
    • 实时监控:journalctl -f
    • 查看特定服务日志:journalctl -u nginx.service
    • 按时间过滤:journalctl --since "2023-10-01" --until "2023-10-02"
  2. dmesg命令
    dmesg用于查看内核环缓冲区日志,常用于排查硬件或驱动问题:

    dmesg | grep -i usb

日志轮转与归档

Linux系统通常通过logrotate工具管理日志轮转,防止日志文件过大,配置文件位于/etc/logrotate.conf,例如nginx日志的轮转配置:

/var/log/nginx/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 644 nginx nginx
}

说明:日志每天轮转一次,保留7天,压缩旧日志,文件权限为644。

不同日志文件的用途

日志文件路径 用途说明
/var/log/syslog 系统日志,记录内核和系统服务信息
/var/log/auth.log 认证日志,记录登录和权限变更
/var/log/kern.log 内核日志,记录硬件驱动和内核事件
/var/log/nginx/ Nginx访问和错误日志
/var/log/mysql/ MySQL数据库日志

综合案例:定位Web服务故障

假设Nginx服务无法访问,可通过以下步骤排查:

  1. 检查错误日志:
    tail -n 50 /var/log/nginx/error.log
  2. 分析访问日志中的异常IP:
    grep "POST" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c
  3. 结合journalctl查看系统服务状态:
    journalctl -u nginx.service --since "10 min ago"

相关问答FAQs

问题1:如何实时查看多个日志文件?
解答:可以使用multitail工具同时监控多个文件,

multitail /var/log/syslog /var/log/nginx/error.log

若未安装,可通过apt install multitail(Ubuntu)或yum install multitail(CentOS)安装。

问题2:如何按时间范围过滤日志?
解答

  • 对于journalctl:使用--since--until参数,如journalctl --since "2023-10-01 10:00:00" --until "2023-10-01 11:00:00"
  • 对于文本日志(如syslog),可结合sedawk按时间戳过滤,
    awk '/Oct 01 10:[0-5][0-9]:[0-5][0-9]/' /var/log/syslog
分享:
扫描分享到社交APP
上一篇
下一篇