在 Linux 中,“进程日志”不是一个固定的概念,通常会根据进程类型和配置从不同地方查看。下面按最常见、最实用的方式给你一个完整说明。
journalctl(systemd 系统,推荐)适用于 CentOS 7+、Ubuntu 16+、Debian 8+
journalctl -u 服务名
例如:
journalctl -u nginx
journalctl -u mysql
journalctl -u docker
journalctl -u nginx -f
journalctl --since "2025-01-01 00:00" --until "2025-01-02 00:00"
journalctl _PID=1234
很多程序会写日志到文件,而不是系统日志。
/var/log/
常见例子:
/var/log/nginx/
/var/log/mysql/
/var/log/httpd/
tail -f /var/log/nginx/error.log
或:
less /var/log/nginx/access.log
/var/log/messages(CentOS / RHEL)tail -f /var/log/messages
/var/log/syslog(Ubuntu / Debian)tail -f /var/log/syslog
注:这些日志按“消息”记录,不一定能直接对应到某个进程。
ps -ef | grep 进程名
或:
pgrep nginx
lsof -p PID
或直接看日志文件:
ls -l /proc/PID/fd
如果进程是通过 nohup 启动的:
nohup.out
或:
tail -f nohup.out
如果是 systemd 服务,stdout/stderr 会被 journald 接管,直接用:
journalctl -u 服务名
✅ 服务器程序(nginx、mysql、docker)
journalctl -u 服务名
✅ 自定义程序
ps -ef | grep 程序名
→ 看配置文件里的 log 路径
→ 或直接 lsof -p PID
你可以告诉我:
我可以一步步帮你精确找到日志位置。