Linux 查看某个服务运行日志方法

3次阅读

linux查看服务日志首选journalctl(如journalctl -u nginx.service -f),其次查服务配置确认日志路径,再直接读取/var/log/下对应文件;不确定服务名时用systemctl list-unit-files或systemctl status辅助定位。

Linux 查看某个服务运行日志方法

Linux 查看某个服务运行日志,主要取决于该服务是否由 systemd 管理(现代主流发行版如 ubuntu 20.04+、centos 7+、debian 9+ 均默认使用),以及日志是否输出到标准输出/错误或写入独立文件。

用 journalctl 查看 systemd 服务日志

绝大多数系统服务(如 nginx、mysqldockerssh)以 systemd unit 形式运行。直接通过 journalctl 查看最准确、最实时:

  • 查看某服务的全部日志:`journalctl -u servicename.service`(例如 `journalctl -u nginx.service`)
  • 实时跟踪日志(类似 tail -f):`journalctl -u servicename.service -f`
  • 查看最近 100 行:`journalctl -u servicename.service -n 100`
  • 只看本次启动后的日志:`journalctl -u servicename.service –since this-boot`
  • 按时间范围筛选:`journalctl -u servicename.service –since “2024-05-01” –until “2024-05-02″`

查服务配置确认日志路径

有些服务(如 apachetomcat)可能不依赖 systemd 日志,而是自行写入文件。先确认服务类型和配置:

  • 运行 `systemctl cat servicename.service` 查看 unit 文件,留意 StandardOutputStandardErrorExecStart 中是否重定向了日志(如 > /var/log/myservice.log 2>&1
  • 检查服务主配置文件(如 `/etc/nginx/nginx.conf` 的 error_log 指令,或 `/etc/my.cnf` 的 log-error
  • 常见默认日志位置:/var/log/ 下对应服务名目录(如 /var/log/nginx/error.log/var/log/mysql/error.log

直接读取传统日志文件

若服务写入固定日志文件,可用常规命令查看:

  • 查看最新内容:`tail -n 50 /var/log/servicename/logfile.log`
  • 持续监控:`tail -f /var/log/servicename/logfile.log`
  • 搜索关键词(如错误):`grep -i “error|fail” /var/log/servicename/logfile.log | tail -20`
  • 查看日志文件权限和归属:`ls -l /var/log/servicename/`(避免因权限问题无法读取)

补充技巧:快速定位服务名与状态

如果不确定服务的准确名称或是否在运行:

  • 列出所有已加载服务并过滤:`systemctl list-unit-files –type=service | grep -i keyword`
  • 查看服务当前状态及最近日志摘要:`systemctl status servicename.service`(最后一屏常含最近几行日志)
  • 检查服务是否启用开机自启:`systemctl is-enabled servicename.service`

不复杂但容易忽略的是:systemd 日志默认保存在内存和 /run/log/journal(易丢失),如需持久化,需创建 /var/log/journal 目录并重启 journald。多数排查场景下,journalctl -u xxx -f 已足够高效。

text=ZqhQzanResources