排查linux服务问题时,首选journalctl或syslog类系统查看日志。journalctl适用于systemd系统,可查看内核消息、服务启动输出等,支持按时间、单元、优先级过滤;syslog适用于传统系统,需服务主动发送日志,支持集中管理。掌握两者使用能有效定位问题。

在Linux系统中排查服务问题时,查看日志是最直接有效的方法之一。journalctl 和 syslog(或其现代变种如 rsyslog、syslog-ng)是两种常用的日志查看和管理系统,各有特点,适用于不同的场景。

一、journalctl:systemd 系统的日志利器
journalctl 是 systemd 提供的一个工具,用来查询由 journald 收集的日志。它不仅记录内核消息,还包括服务启动过程中的输出、用户登录信息等。

使用建议:
-
基本查看命令:
- 查看所有日志:
journalctl - 查看某个服务的日志:
journalctl -u ssh.service - 实时监控日志更新:
journalctl -f
- 查看所有日志:
-
按时间过滤:

- 指定时间段查看:
journalctl --since "1 hour ago"或journalctl --since "2024-03-01" --until "2024-03-02"
- 指定时间段查看:
-
结合优先级过滤:
- 只看错误级别以上的日志:
journalctl -p err
- 只看错误级别以上的日志:
小贴士:如果你的服务是通过 systemd 启动的,用 journalctl 几乎可以覆盖所有运行时输出,而且不需要额外配置就能看到详细的调试信息。
二、syslog类日志系统:传统但灵活
syslog 是传统的日志收集机制,很多发行版使用 rsyslog 或 syslog-ng 来实现。这类日志通常写入到 /var/log/ 下的文件中,比如 messages、syslog、auth.log 等。
常见操作与建议:
-
查看系统整体日志:
-
cat /var/log/syslog或tail -f /var/log/messages
-
-
查看特定服务日志:
- SSH 登录失败?试试:
grep 'sshd' /var/log/auth.log - Apache 错误日志一般在:
/var/log/apache2/error.log
- SSH 登录失败?试试:
-
日志轮转管理:
- 使用
logrotate工具定期归档旧日志,防止磁盘占满 - 配置文件路径通常是:
/etc/logrotate.conf或/etc/logrotate.d/
- 使用
注意:syslog 类日志需要服务本身支持将日志发送给 syslog 守护进程,否则可能看不到你想查的内容。
三、journalctl vs syslog:怎么选?
| 特性 | journalctl | syslog |
|---|---|---|
| 日志来源 | systemd 服务、内核、标准输出 | 系统服务主动发送 |
| 存储方式 | 二进制格式,默认内存/磁盘 | 文本文件 |
| 查询灵活性 | 强,支持过滤时间、单元、优先级 | 中等,需手动 grep |
| 跨主机集中管理 | 不适合 | 支持转发,适合集中日志系统 |
- 如果你使用的是较新的基于 systemd 的系统,且想快速定位服务问题,推荐用
journalctl - 如果你在维护服务器集群,或者需要集中收集日志(比如用 ELK、Graylog),那 syslog 更合适
基本上就这些了。掌握好这两个工具,大部分 Linux 服务日志的问题都能找到线索。别忘了,有些服务还会写自己的专属日志文件,比如 MySQL 的 error log、Nginx 的 access.log,也值得一看。










