对于Linux新手来说,日志系统就像系统的“黑匣子”,记录了系统运行、服务状态、错误信息等关键数据,学会看日志,是排查故障、理解系统行为的核心技能,本文将从基础概念到实用命令,带你一步步掌握日志查看方法。

日志是什么?为什么重要?
日志是系统或应用程序在运行过程中产生的记录文件,包含时间、事件、进程ID、错误描述等信息,比如系统启动时的服务加载情况、用户登录记录、应用运行错误等,都会被记录在日志中,通过日志,我们可以快速定位问题(如服务崩溃、权限错误、网络异常)、监控系统状态(如CPU负载、磁盘空间)、分析用户行为(如网站访问日志)。
常见日志文件位置及作用
Linux日志通常存储在/var/log/目录下,不同类型日志对应不同文件,以下是新手最常接触的日志文件:
| 日志文件名 | 路径 | 作用说明 |
|---|---|---|
| messages | /var/log/messages | 系统核心日志,记录系统启动、服务状态、硬件信息等通用事件 |
| auth.log | /var/log/auth.log | 认证日志,记录用户登录、sudo操作、SSH连接等安全相关事件 |
| syslog | /var/log/syslog | 系统日志,与messages类似,部分系统可能优先记录到这里 |
| kern.log | /var/log/kern.log | 内核日志,记录硬件驱动、内核模块加载等内核级别事件 |
| dpkg.log | /var/log/dpkg.log | 软件包安装/卸载日志,记录apt安装、删除软件包的操作记录 |
| nginx/error.log | /var/log/nginx/error.log | Nginx服务器错误日志,记录请求处理错误、配置问题等 |
| apache2/error.log | /var/log/apache2/error.log | Apache服务器错误日志,类似Nginx,记录HTTP服务错误 |
| mysql/error.log | /var/log/mysql/error.log | MySQL数据库错误日志,记录数据库启动、查询、连接等错误信息 |
核心查看命令详解
掌握以下命令,就能应对90%的日志查看需求:
-
cat:查看整个日志文件,适合小文件(如dpkg.log)。
示例:cat /var/log/dpkg.log -
less:分页查看大文件,支持上下翻页(空格下翻,b上翻,q退出)。
示例:less /var/log/messages
-
tail:查看文件末尾内容,适合实时监控最新日志。
常用参数:-f(持续跟踪文件变化,Ctrl+C退出),-n(显示末尾n行)。
示例:tail -f /var/log/nginx/access.log(实时查看Nginx访问日志) -
grep:过滤包含关键词的行,精准定位问题。
常用参数:-i(忽略大小写),-n(显示行号)。
示例:grep "error" /var/log/syslog(查找所有错误信息) -
journalctl:查看systemd管理的系统日志(现代Linux发行版常用),功能强大。
常用参数:-u(指定服务,如-u nginx),--since(指定时间,如--since "2023-10-01"),-f(实时跟踪)。
示例:journalctl -u ssh --since today(查看今天的SSH服务日志)
日志级别解析
日志按重要性分为8个级别,数字越小越紧急:
| 级别 | 数字标识 | 含说明 |
|---|---|---|
| emerg | 0 | 系统不可用(如内核崩溃) |
| alert | 1 | 需要立即处理的紧急情况 |
| crit | 2 | 严重错误(如服务关键故障) |
| err | 3 | 一般错误(如程序运行错误) |
| warning | 4 | 警告(如磁盘空间不足) |
| notice | 5 | 普通通知(如服务启动成功) |
| info | 6 | 一般信息(如用户登录) |
| debug | 7 | 调试信息(详细运行过程) |
通过日志级别,新手可以快速识别问题严重性,优先处理紧急日志(如emerg、crit)。

实用分析技巧
- 结合时间戳:日志通常以时间开头(如Oct 10 08:30:01),结合问题发生时间缩小范围。
- 关注错误关键词:如“failed”“error”“timeout”“denied”,用grep过滤。
- 查看进程ID:日志中常包含PID(如systemd[1]),可结合
ps命令查看进程状态。 - 注意日志轮转:系统会自动归档旧日志(如messages.1、messages.2),避免误删。
新手学看日志,关键是掌握“位置-命令-关键词”三要素:先明确日志位置,再用tail/grep/journalctl等命令查看,最后通过关键词和时间定位问题,多练习,遇到问题主动翻日志,很快就能上手。
FAQs
-
日志文件太大,如何快速查找关键信息?
答:优先用grep过滤关键词(如grep "error" /var/log/syslog),结合-n显示行号;若需查看特定时间段,用journalctl --since "时间" --until "时间";若只需最新部分,用tail -n 100显示末尾100行。 -
为什么用
journalctl而不是直接看/var/log/syslog?
答:journalctl是systemd的日志管理工具,优势在于:①支持实时跟踪(-f);②可按服务、时间、优先级等结构化过滤;③整合了syslog、kern.log等多源日志,查询更高效;而/var/log/syslog是传统文本日志,功能单一,适合查看特定文件内容。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/22584.html