优先用 journalctl 查 systemd 服务日志,如 journalctl -u nginx.service;传统服务日志在 /var/log/ 下,如 Nginx 的 /var/log/nginx/error.log;不确定时可用 systemctl cat、find、lsof 或 systemctl show 定位路径。

Linux服务日志的查看位置和方法,取决于系统是否使用 systemd(现代主流发行版)以及服务自身的配置方式。核心原则是:优先用 journalctl 查 systemd 管理的服务;传统或自定义服务则去 /var/log/ 下找对应路径。
systemd 服务日志统一查 journalctl
几乎所有 Ubuntu 22.04+、CentOS 7+、Debian 10+ 等系统都用 systemd 启动服务,其日志不写文件,而是由 journald 统一管理:
-
看某个服务的全部日志:运行
journalctl -u nginx.service(把 nginx 换成你的服务名,如 sshd、mysql、docker) -
实时跟踪最新日志:加
-f参数,比如journalctl -u nginx.service -f,Ctrl+C 退出 -
只看错误及以上级别:加上
-p err,例如journalctl -u httpd -p err -
限定时间范围:如查今天上午的记录,用
journalctl -u cron --since "today 09:00:00"
/var/log/ 下找传统或应用专属日志
有些服务(尤其是非 systemd 启动的、容器内运行的、或手动部署的)会把日志写进文件,常见路径有:
- 通用系统级日志:/var/log/messages(CentOS/RHEL)、/var/log/syslog(Ubuntu/Debian)
- 安全与登录日志:/var/log/secure(RHEL/CentOS)、/var/log/auth.log(Ubuntu/Debian)
- Web 服务日志:Nginx 在 /var/log/nginx/access.log 和 error.log;Apache 在 /var/log/apache2/ 或 /var/log/httpd/
- 数据库日志:MySQL 通常在 /var/log/mysqld.log 或 /var/lib/mysql/*.err;PostgreSQL 日志默认在 /var/log/postgresql/
-
Docker 容器日志:主机上不直接存文件,用
docker logs <container_id>;底层日志实际在 /var/lib/docker/containers/<id>/<id>-json.log(仅限 json-file 驱动)
快速定位服务日志路径的实用技巧
如果不确定日志在哪,别盲目翻目录,试试这几个高效办法:
-
查服务配置里写的日志路径:运行
systemctl cat <service_name>,搜索LogPath、StandardOutput或ExecStart中的重定向(如> /var/log/myapp.log) -
用 find 快速搜 .log 文件:执行
find /var/log -name "*nginx*" -type d 2>/dev/null,或更宽泛地find /var/log -name "*.log" | head -20 -
看进程打开的文件:先用
ps aux | grep nginx找主进程 PID,再运行lsof -p <pid> | grep log,能直接看到它正在写哪个日志文件 -
查 systemd 的日志输出设置:运行
systemctl show <service> | grep Standard,若显示StandardError=journal,说明走 journalctl;若为file:/path/to.log,就去那个路径看
配合 tail 和 grep 实时抓关键信息
无论日志在 journal 还是文件里,排查问题时往往需要“边看边筛”:
- 对文件日志:用
tail -f /var/log/nginx/error.log | grep -i "50[0-9]\|connect\|timeout"实时捕获错误模式 - 对 journal 日志:组合管道过滤,如
journalctl -u mysql -f | grep -E "(ERROR|Crash|OOM)" - 查上下文更清楚:用
grep -C 2 "Connection refused" /var/log/secure显示匹配行及前后两行 - 大日志别硬翻:先
tail -n 500 /var/log/messages | less,进入 less 后按/error搜索,按n跳下一个










