Linux 入门实战练习:运行日志脚本、保存报错并下载结果
Linux 服务器入门 · 第 18 篇 / 共 18 篇
这次先按任务说明自己做,遇到忘记的命令可以回查前文。完成标准是结果正确、失败原因说得清,不是全程不查资料。
你需要能登录的 Ubuntu 练习服务器、Windows 终端或 SFTP 工具,以及 Bash、awk、unzip。脚本只处理教学数据,不需要 sudo。
任务:生成一份可核对的错误行计数
下载 ZIP 练习包,用 SFTP 或 scp 上传到服务器家目录。包中包含脚本、README、文本文件和六行教学日志,其中两行级别为 ERROR。
要完成的事:解压到自己的项目目录,阅读说明,运行脚本并保存计数;主动给一次不存在的输入路径,保存报错并修复;最后把正确报告下载到 Windows。
先自己尝试。下面提供一条参考路径,目录名称可以变化,只要前后使用一致。
准备项目,先读说明
在服务器执行。首次练习使用下面的新目录;已有结果时先备份,-n 会跳过同名文件,不代表已更新为新版本。
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 scripts/count-errors.sh logs/app.log未修改的教学包应输出 2。脚本按包含 ERROR 的行计数;它不理解所有日志格式,也不能把多行异常自动合并成一次事件。想了解实现,可以用 less scripts/count-errors.sh 查看,先会按说明使用即可。
保存一次成功结果
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 scripts/count-errors.sh logs/missing.log > reports/count.txt 2> reports/run-error.txt
echo $?
cat reports/run-error.txt原样练习包的预期退出状态为 1,标准错误内容为:
ERROR: cannot read log file: logs/missing.logcount.txt 这时可能为空。再次说明:文件存在不能证明任务成功。先核对 pwd、ls -l logs/app.log,把输入改回真实路径,再运行:
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。
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 示例项目,记录提交版本并运行本地预览。获取公开仓库与运行本站教学脚本是两种资料使用方式;本课程不依赖尚未创建的外部仓库。
下一步:运行自己的任务
这次脚本只处理几行教学日志。换成自己的科研或数据处理任务后,还需要核对软件依赖、输入数据、运行时间和资源要求。
如果已经有具体任务,可以带着软件、数据规模和预计运行时间了解服务器配置。先确认环境能满足任务,再沿用本篇的做法记录运行结果和失败原因。