答案是查看Linux日志需综合使用journalctl、dmesg、tail、grep等工具。journalctl用于systemd系统集中查询服务及内核日志,支持时间、优先级、字段等多维度过滤;dmesg专注内核启动与硬件问题;tail -f实时监控日志动态;cat、grep、less结合正则和管道可精准提取关键信息。因日志来源分散(如auth.log、kern.log、应用日志),且问题常涉及多层面,必须多文件联动分析。通过高级过滤、格式控制与文本处理工具组合,可高效定位问题,实现对海量日志的快速搜索与结构化分析。

在Linux的世界里,想要了解系统发生了什么,日志就是那本最真实的日记。对我来说,查看系统日志的常用命令主要集中在
journalctl
dmesg
tail
cat
grep
说起日志,我个人觉得,现代Linux系统,尤其是采用systemd的发行版,
journalctl
journalctl -u nginx.service
journalctl -since "10 min ago"
当然,
dmesg
dmesg
而
tail -f
tail -f /var/log/syslog
tail -f /var/log/nginx/access.log
至于
cat
grep
journalctl
/var/log
auth.log
kern.log
cat /var/log/auth.log | grep "Failed password"
less
more
/
?
这问题问得好,因为Linux系统的日志体系远比我们想象的要复杂和分散。在我看来,这就像医生诊断病人,不能只看一个指标就下结论。我们不能只盯着一个日志文件看,主要有几个原因:
首先,日志的来源和类型多样化。 传统的syslog服务,会将不同类别的日志(如认证信息、内核信息、邮件信息等)写入不同的文件,比如
/var/log/auth.log
/var/log/kern.log
/var/log/maillog
/var/log
其次,现代Linux系统引入了systemd-journald
journald
journalctl
/var/log/syslog
journalctl
journalctl
再者,问题往往是多层面的。 一个系统故障,可能既涉及到内核层面(
dmesg
journalctl -u service
/var/log/auth.log
dmesg
journalctl
当然能!
journalctl
journalctl -u service
按时间过滤: 这是我最常用的功能之一。
journalctl --since "2023-01-01 10:00:00" --until "2023-01-01 11:00:00"
journalctl --since "yesterday"
journalctl --since "1 hour ago"
journalctl -S "09:00" -U "10:00"
按优先级过滤: 日志有不同的优先级(从 debug 到 emerg)。
journalctl -p err
journalctl -p warning
按特定字段过滤:
journalctl
_PID
_UID
_EXE
journalctl _PID=1234
journalctl _COMM=sshd
查看内核日志:
journalctl -k
dmesg
journald
journalctl -b
journalctl -b -1
输出格式控制:
journalctl -o json
journalctl -o short-iso
journalctl -o verbose
通过这些高级用法,我常常能迅速从海量日志中抽丝剥茧,找到问题的症结所在。这比漫无目的地
grep
处理海量日志,光靠几个命令的简单使用是远远不够的,需要一套策略和组合拳。在我多年的经验里,这就像大海捞针,但有了对的工具和方法,效率会指数级提升。
善用管道符和文本处理工具: 这是Linux的精髓。
cat /var/log/syslog | grep "error" | less
less
journalctl -u nginx.service --since "1 hour ago" | grep "404" | awk '{print $10}' | sort | uniq -c | sort -nrsed
awk
理解日志格式: 不同服务和应用的日志格式差异很大。Nginx的访问日志、Apache的错误日志、数据库的慢查询日志,它们的信息结构都不一样。在进行搜索和分析之前,花点时间了解目标日志的格式,知道每个字段代表什么,能让你编写出更精确的
grep
awk
正则表达式的力量:
grep
grep -E "IP_ADDRESS|ANOTHER_IP" /var/log/auth.log
grep -P '(?<=Failed password for ).*?(?= from)' /var/log/auth.log
利用 less
less
/
?
n
n
grep
日志轮转(Logrotate)和持久化: 虽然这不是直接的搜索分析命令,但理解日志轮转机制(通常由
logrotate
journalctl
/etc/systemd/journald.conf
Storage
journald
高效分析海量日志,更多的是一种思维方式:先缩小范围(时间、服务、优先级),再精确定位(关键词、正则表达式),最后深入分析(提取字段、统计、关联)。这需要经验积累,但上面这些方法,无疑是入门和进阶的必经之路。
以上就是Linux查看系统日志的常用命令的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号