Linux 日志在哪里?终端报错、日志文件与 journal 入门
Linux 服务器入门 · 第 15 篇 / 共 18 篇
程序说“失败了”,接下来需要知道失败发生在什么时候、处理了什么对象。日志就是系统或程序写下的运行记录,但并不是每条命令都会自动生成一个 .log 文件。
本篇使用第 09 篇的教学日志。没有这份文件,可以返回创建,也可以下载练习包,按解压步骤取得副本。不要把不同目录下的样例混当成同一份文件。
先读懂一条记录
2026-10-18T09:00:02+08:00 ERROR job=demo01 input file missing这行是教学数据:时间带着 +08:00 时区,级别为 ERROR,job=demo01 把同一任务的记录串起来,消息指出输入文件缺失。
INFO 常用于一般运行信息,WARN 常用于需要留意的情况,ERROR 常用于失败。但级别名称与使用规则由程序决定,不能只看一个词判断系统是否正常。时间和关联字段常比“有没有红字”更有用。
报错可能只出现在终端
命令通常有标准输出和标准错误两个通道。正常结果常写到标准输出,诊断信息常写到标准错误;程序也可以采用不同约定。
在服务器练习目录做一个可控例子:
mkdir -p ~/linux-practice/reports
cd ~/linux-practice
ls logs/no-such-file.log > reports/list.txt假设这个教学目标不存在,终端仍会显示报错,而 list.txt 可能已经创建但为空。> 只接收标准输出,不会自动把标准错误也存起来。“有了结果文件”不代表命令成功。
想分开保存,可以执行:
ls logs/no-such-file.log > reports/list.txt 2> reports/list-error.txt
cat reports/list-error.txt2> 重定向标准错误,也会覆盖对应文件。这是命令输出的保存方式,不表示应用从此有了持久日志系统。
文件日志的位置从程序配置里找
许多系统程序把日志放在 /var/log,项目自己的日志也可能在工作目录或配置指定的位置。找法通常是:先读 README 或运行说明,再看配置里的日志选项。
前面在练习机安装过 Nginx 时,可以查看配置声明:
sudo nginx -T 2>&1 | grep -E 'access_log|error_log'-T 输出配置,2>&1 在这里把标准错误也交给后面的筛选。它可能包含注释、多个站点或不同作用域,看到一行路径后还要确认它属于哪个配置。不要把整份配置随意发到公开位置。
Ubuntu 的常见安装会使用 /var/log/nginx/access.log 和 /var/log/nginx/error.log,但以当前配置为准。访问日志记录请求,错误日志记录相关诊断;没有请求、日志级别较高或记录被关闭时,文件可能没有你期待的内容。Nginx 入门文档介绍了配置和查日志的关系。
服务也可能记录到 journal
在使用 systemd 的 Ubuntu 练习服务器上:
sudo journalctl -u nginx -n 20 --no-pager-u 选择服务单元,-n 取最近指定数量,--no-pager 不进入分页界面。这里使用 sudo 是为了读取有权限限制的服务记录,不是修复服务。
journal 不是一个保证能用 cat 阅读的普通文本文件。也不是 Nginx 所有请求与应用错误都会被复制进 journal;服务启动诊断和应用自己的文件日志可能分处两处。journalctl 手册说明了读取与筛选方式。
现在选一个你刚运行的程序,回答:错误显示在哪里、是否保存到了文件、要查哪个时间段。先确定来源,再进入下一节的定位练习。