Skip to content

Linux 入门实战练习:运行日志脚本、保存报错并下载结果 ​

Linux 服务器入门 · 第 18 篇 / 共 18 篇

这次先按任务说明自己做,遇到忘记的命令可以回查前文。完成标准是结果正确、失败原因说得清,不是全程不查资料。

你需要能登录的 Ubuntu 练习服务器、Windows 终端或 SFTP 工具,以及 Bash、awk、unzip。脚本只处理教学数据,不需要 sudo。

任务:生成一份可核对的错误行计数 ​

下载 ZIP 练习包,用 SFTP 或 scp 上传到服务器家目录。包中包含脚本、README、文本文件和六行教学日志,其中两行级别为 ERROR。

要完成的事:解压到自己的项目目录,阅读说明,运行脚本并保存计数;主动给一次不存在的输入路径,保存报错并修复;最后把正确报告下载到 Windows。

综合实践从 Windows 上传资料、在 Linux 解压阅读、运行脚本,到保存报错、修正输入和下载报告。

任务流程示意。遇到失败保留证据,修复后重新检查最终文件。

先自己尝试。下面提供一条参考路径,目录名称可以变化,只要前后使用一致。

准备项目,先读说明 ​

在服务器执行。首次练习使用下面的新目录;已有结果时先备份,-n 会跳过同名文件,不代表已更新为新版本。

bash
mkdir -p ~/linux-practice/project
unzip -n ~/linux-practice-v1.zip -d ~/linux-practice/project
cd ~/linux-practice/project/linux-practice
cat README.txt
ls scripts logs

这里有两层 linux-practice:外面是整套课程工作目录,里面是归档自带的项目目录。进入后用 pwd 确认,不要凭终端之前的位置猜测。

运行一次:

bash
bash scripts/count-errors.sh logs/app.log

未修改的教学包应输出 2。脚本按包含 ERROR 的行计数;它不理解所有日志格式,也不能把多行异常自动合并成一次事件。想了解实现,可以用 less scripts/count-errors.sh 查看,先会按说明使用即可。

保存一次成功结果 ​

bash
mkdir -p reports
bash scripts/count-errors.sh logs/app.log > reports/count.txt
cat reports/count.txt

预期报告只有一行 2。若你改过日志,应以实际内容核对;先用 grep -n ' ERROR ' logs/app.log 找出被统计的两条记录。

重现一次失败,记录证据 ​

下面刻意传入不存在的路径。它会覆盖上一份 count.txt,所以真正交付前还要重新生成正确报告。

bash
bash scripts/count-errors.sh logs/missing.log > reports/count.txt 2> reports/run-error.txt
echo $?
cat reports/run-error.txt

原样练习包的预期退出状态为 1,标准错误内容为:

text
ERROR: cannot read log file: logs/missing.log

count.txt 这时可能为空。再次说明:文件存在不能证明任务成功。先核对 pwd、ls -l logs/app.log,把输入改回真实路径,再运行:

bash
bash scripts/count-errors.sh logs/app.log > reports/count.txt 2> reports/run-error.txt
echo $?
cat reports/count.txt

此时应返回 0,报告为 2,错误文件为空。空错误文件与状态、正确报告一起构成这次成功的证据。

把结果带回 Windows ​

在自己的 Windows PowerShell 中进入下载目录,再执行下载。下面账号与文档示例地址必须替换;若 SSH 使用 2222 等自定义端口,给 scp 加相应的大写 -P。

powershell
cd "$env:USERPROFILE\Downloads"
scp lin@198.51.100.10:linux-practice/project/linux-practice/reports/count.txt .\linux-count.txt

也可以用 SFTP 选择同一个远程文件。下载后在 Windows 打开它,检查内容仍为 2,完成这次实践。

交付前核对这几项 ​

检查点本例应有的结果
工作位置自己账号下的项目目录
原始日志六行教学数据,包含两行 ERROR
正常运行退出状态 0,计数为 2
错误输入退出状态 1,错误说明能指向传入路径
修复后报告重新生成,不是失败后留下的空文件
本地副本Windows 能打开,内容与远程一致

再写下三句话:最初失败的命令是什么、哪条证据说明原因、修复后怎样验证。下一次遇到真实工具失败,就沿着同样的过程查。

想增加一项练习,可按第 14 篇获取 GitHub 示例项目,记录提交版本并运行本地预览。获取公开仓库与运行本站教学脚本是两种资料使用方式;本课程不依赖尚未创建的外部仓库。

下一步:运行自己的任务 ​

这次脚本只处理几行教学日志。换成自己的科研或数据处理任务后,还需要核对软件依赖、输入数据、运行时间和资源要求。

如果已经有具体任务,可以带着软件、数据规模和预计运行时间了解服务器配置。先确认环境能满足任务,再沿用本篇的做法记录运行结果和失败原因。