菜鸟科技网

Linux系统日志查看命令有哪些?

在Linux系统中,日志是记录系统运行状态、应用程序行为、用户操作等关键信息的重要文件,通过查看日志可以快速定位系统故障、排查安全问题和监控应用性能,Linux系统提供了多种命令和工具来查看日志,本文将详细介绍常用的日志查看命令,包括它们的基本用法、高级选项及实际应用场景。

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

基础日志查看命令

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

    cat /var/log/boot.log

    如果日志文件较大,cat命令会一次性输出所有内容,可能超出终端显示范围,此时可通过管道符配合moreless命令分页显示:

    cat /var/log/syslog | less
  2. less命令
    less是交互式文本查看器,支持分页、搜索、上下滚动等操作,适合查看大型日志文件,基本用法为:

    less /var/log/auth.log

    less界面中,可通过搜索日志内容,n跳至下一个匹配项,N跳至上一个匹配项,q退出查看。

    Linux系统日志查看命令有哪些?-图2
    (图片来源网络,侵删)
  3. more命令
    moreless类似,但仅支持向下分页,无法向上滚动,适用于只需查看日志前几行或后续内容的场景:

    more /var/log/kern.log

    按空格键翻页,q键退出。

按需过滤日志内容

  1. grep命令
    grep是强大的文本搜索工具,用于从日志中过滤包含特定关键词的行,查看/var/log/syslog中包含"error"的日志:

    grep "error" /var/log/syslog

    常用选项:

    Linux系统日志查看命令有哪些?-图3
    (图片来源网络,侵删)
    • -i:忽略大小写,如grep -i "ERROR" /var/log/syslog
    • -n:显示行号,便于定位问题
    • -c:统计匹配行数,如grep -c "failed" /var/log/auth.log
      若需排除某些内容,可使用-v选项,例如查看除"info"外的所有日志:
      grep -v "info" /var/log/syslog
  2. awk命令
    awk用于按列处理日志内容,适合结构化日志分析,查看/var/log/nginx/access.log中客户端IP和访问状态码:

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

    结合条件过滤,可提取特定状态码的日志:

    awk '$9 == "500" {print $1, $7}' /var/log/nginx/access.log
  3. sed命令
    sed用于流编辑文本,可实现日志内容的替换、删除等操作,删除日志中的敏感信息(如IP地址):

    sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/XXX/g' /var/log/syslog

实时监控日志动态

  1. tail命令
    tail用于查看文件的末尾内容,特别适合实时监控日志更新,实时查看系统日志的最新记录:

    tail -f /var/log/syslog

    常用选项:

    • -n:指定显示末尾行数,如tail -n 100 /var/log/auth.log
    • -F:自动跟踪日志文件轮转(如日志被切割后仍能继续监控)
  2. multitail命令
    multitail可同时监控多个日志文件,并支持高亮显示关键词,需先安装:

    sudo apt install multitail  # Debian/Ubuntu系统

    使用示例:

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

系统专用日志查看工具

  1. journalctl(systemd系统)
    journalctl用于查看systemd的日志,整合了内核日志、系统服务日志等,常用操作:

    • 查看所有日志:journalctl
    • 实时监控:journalctl -f
    • 查看特定服务的日志:journalctl -u nginx.service
    • 按时间过滤:journalctl --since "2023-10-01" --until "2023-10-02"
    • 查看内核日志:journalctl -k
  2. dmesg(内核日志)
    dmesg用于查看内核产生的日志,如硬件驱动、系统启动信息等:

    dmesg | less

    结合grep过滤硬件错误:

    dmesg | grep -i "error"

日志轮转与归档处理

Linux系统通常会通过logrotate工具对日志进行轮转(切割、压缩、归档),避免单个日志文件过大,查看logrotate配置文件:

cat /etc/logrotate.conf

特定服务的轮转配置通常位于/etc/logrotate.d/目录下,

cat /etc/logrotate.d/nginx

日志分析实践案例

案例1:定位SSH登录失败原因

grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr

该命令统计登录失败的IP地址及次数,可快速发现暴力破解行为。

案例2:分析Nginx访问日志的高频URL

awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

提取访问量最高的前10个URL,用于优化网站性能。

相关问答FAQs

Q1: 如何查看Linux系统中的错误日志?
A1: 可通过以下步骤查看错误日志:

  1. 使用journalctl查看系统服务错误:
    journalctl -p err
  2. 查看特定服务的错误日志(如Nginx):
    tail -f /var/log/nginx/error.log
  3. 结合grep过滤关键词:
    grep -i "error" /var/log/syslog

Q2: 日志文件过大导致查看缓慢,如何高效处理?
A2: 可采用以下方法优化:

  1. 使用lessmore分页查看,避免终端卡顿:
    less /var/log/large.log
  2. 通过grep提取关键内容缩小范围:
    grep "critical" /var/log/large.log > critical.log
  3. 使用split命令分割大日志文件:
    split -l 10000 /var/log/large.log split_log_
  4. 定期配置logrotate自动轮转日志,避免文件过大。
分享:
扫描分享到社交APP
上一篇
下一篇