菜鸟科技网

服务器日志查看常用命令有哪些?

查看服务器日志是系统管理和故障排查中的核心操作,通过日志可以定位应用程序错误、监控系统性能、分析安全事件等,不同操作系统(如Linux、Windows)和不同服务(如Nginx、MySQL)的日志查看方式存在差异,掌握常用命令能大幅提升运维效率,以下从Linux系统日志、应用服务日志、日志分析技巧及工具等方面展开详细说明。

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

Linux系统日志查看命令

Linux系统日志通常存储在/var/log目录下,核心日志文件包括messages(系统主日志)、secure(安全认证日志)、cron(定时任务日志)、dmesg(内核日志)等,常用查看命令包括catlesstailheadgrep等。

基础查看命令

  • cat:直接输出整个日志文件内容,适合小文件查看。
    cat /var/log/messages  # 查看系统主日志
  • less:分页查看日志,支持上下翻页(方向键)、关键词搜索()和退出(q),适合大文件。
    less /var/log/secure
  • head/tail:分别用于查看文件开头和末尾内容,tail常用于实时追踪日志更新。
    head -n 100 /var/log/syslog  # 查看前100行
    tail -f /var/log/nginx/access.log  # 实时追踪Nginx访问日志

过滤与搜索命令

  • grep:按关键词过滤日志,支持正则表达式和颜色高亮(--color=auto)。
    grep "ERROR" /var/log/application.log  # 搜索包含ERROR的行
    grep -i "failed" /var/log/secure  # 忽略大小写搜索failed
    grep -A 5 -B 5 "192.168.1.1" /var/log/nginx/access.log  # 显示匹配行及前后5行
  • awk:按列提取或处理日志,适合结构化日志(如Nginx、MySQL)。
    awk '{print $1, $9}' /var/log/nginx/access.log  # 提取IP和状态码

系统专用日志查看

  • dmesg:查看内核启动过程中的日志,可过滤硬件或驱动相关错误。
    dmesg | grep -i "error"  # 搜索内核错误
  • journalctl:systemd系统的日志管理工具,功能强大,支持按时间、服务、优先级等过滤。
    journalctl -u nginx  # 查看Nginx服务日志
    journalctl --since "2023-10-01" --until "2023-10-02"  # 查看指定时间范围日志
    journalctl -p err  # 查看错误级别及以上日志

应用服务日志查看

不同应用服务的日志路径和格式各异,需根据具体服务调整查看方式。

Web服务器日志

  • Nginx:默认日志路径为/var/log/nginx/,包括access.log(访问日志)和error.log(错误日志)。
    tail -f /var/log/nginx/access.log | grep "GET /api"  # 实时追踪API访问
    awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr  # 统计URL访问量
  • Apache:日志路径为/var/log/apache2/(Ubuntu)或/var/log/httpd/(CentOS),常用access_logerror_log
    grep "POST" /var/log/apache2/access_log | awk '{print $1}' | sort | uniq -c  # 统计POST请求IP

数据库日志

  • MySQL:错误日志默认在/var/log/mysql/error.log(需开启log_error配置),慢查询日志在/var/log/mysql/mysql-slow.log
    tail -f /var/log/mysql/error.log  # 实时查看MySQL错误
    mysqldumpslow -s t /var/log/mysql/mysql-slow.log  # 按查询时间排序慢查询
  • Redis:日志路径通常为/var/log/redis/redis-server.log,可通过CONFIG GET loglevel查看日志级别。
    grep "client" /var/log/redis/redis-server.log  # 查看客户端连接日志

中间件与其他服务

  • Tomcat:日志路径为$CATALINA_HOME/logs/catalina.out,需使用catalina.sh脚本管理。
    tail -f $CATALINA_HOME/logs/catalina.out | grep "Exception"  # 实时追踪异常
  • Docker:容器日志通过docker logs查看,支持--follow(实时)和--tail(指定行数)。
    docker logs -f --tail 100 my_container  # 查看容器最近100行实时日志

日志分析技巧与工具

常用技巧

  • 按时间范围过滤:结合grep和日期格式提取特定时间日志。
    grep "2023-10-01 10:[0-5][0-9]" /var/log/messages  # 提取某小时日志
  • 统计高频错误:使用sortuniqwc组合统计错误频率。
    grep "ERROR" /var/log/application.log | awk '{print $5}' | sort | uniq -c | sort -nr  # 统计错误类型
  • 日志轮转处理:Linux通过logrotate工具管理日志轮转,可通过/etc/logrotate.conf查看配置。

可视化与分析工具

  • ELK Stack:Elasticsearch(存储)、Logstash(处理)、Kibana(可视化),适合大规模日志分析。
  • Graylog:开源日志管理系统,支持实时监控和告警。
  • GoAccess:实时Web日志分析工具,生成可视化报表。
    goaccess /var/log/nginx/access.log -o report.html  # 生成HTML报表

日志查看注意事项

  1. 权限问题:系统日志通常需root权限查看,普通用户可通过sudo提权。
  2. 日志大小:大文件避免使用cat,优先选择lesstail,防止终端卡顿。
  3. 实时监控:使用tail -fjournalctl -f时,需结合grep过滤无关信息,提升效率。

相关问答FAQs

问题1:如何查看Nginx访问日志中IP的访问次数?
解答:使用awk提取IP列,通过sortuniqsort统计次数,命令如下:

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

命令说明:awk '{print $1}'提取IP地址列,sort排序后uniq -c统计重复次数,sort -nr按次数降序排列。

服务器日志查看常用命令有哪些?-图2
(图片来源网络,侵删)

问题2:Linux系统日志满了怎么办?
解答:可通过以下方式处理:

  1. 清理日志:使用> /var/log/logfile清空日志(需root权限),或truncate -s 0 /var/log/logfile截断日志。
  2. 配置轮转:检查/etc/logrotate.conf或服务专用轮转配置(如Nginx的/etc/logrotate.d/nginx),确保日志自动按大小或时间轮转。
  3. 扩容磁盘:若日志路径所在磁盘空间不足,需清理非必要文件或扩容磁盘。
    注意:直接清空日志前,建议先备份重要日志内容,避免丢失关键信息。
服务器日志查看常用命令有哪些?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇