【项目作业】智能日志自动化收集器
项目作业 41
等1人参与

实践描述:
亲爱的慕友们,在我们学习了 ls、grep、find、重定向 和 管道 后,是不是发现:Shell 是自动化运维的“瑞士军刀”?在 ROS2 开发中,节点日志常散落在 /tmp 或 ~/.ros/log 中。本项目请你编写一个脚本,自动收集最近 1 小时内所有 .log 文件,并打包压缩归档。
题目:
请你编写一个脚本,自动收集最近 1 小时内所有 .log 文件,并打包压缩归档。

作业描述

一、开发语言与环境要求
linux系统

二、程序整体要求

脚本名:
log_collector.sh
功能:

  • 查找 $HOME/.ros/log 目录下 最近 1 小时内修改过的 .log 文件
  • 将这些文件复制到 ~/ros_logs_archive/YYYYMMDD_HHMM/(按当前时间命名)
  • 使用 tar.gz 压缩该目录,命名为 ros_logs_$(date +%Y%m%d_%H%M).tar.gz
  • 若无日志文件,输出提示并退出(不创建空包)
  • 必须使用:
find + -newermt "1 hour ago"
mkdir -p
tar -czf
  • 重定向错误信息到 /dev/null(避免干扰)

三、详细设计规范

# 手动创建测试日志
mkdir -p ~/.ros/log
echo "test" > ~/.ros/log/node_1.log
touch -d "5 minutes ago" ~/.ros/log/node_1.log
./log_collector.sh
# 应生成 ~/ros_logs_archive/20251224_1120/ros_logs_20251224_1120.tar.gz

四、提交内容

  • log_collector.sh(可执行权限)
  • README.md:说明使用方法 + 回答讨论问题
评分标准是什么?

正确性

  1. 正确使用 find -newermt “1 hour ago”(10)
  2. 目录按当前时间命名(10)
  3. 成功生成 .tar.gz 包(10)
  4. 无日志时提示并退出,不建空目录(10)

命令规范性

  1. 使用 mkdir -p(5)
  2. 正确使用 tar -czf(5)
  3. 错误输出重定向到 /dev/null(5)
  4. 路径变量加双引号防空格(10)

健壮性

  1. $HOME/.ros/log 不存在时能处理(如跳过或提示)(10)
  2. 脚本可重复运行不报错(5)

工程实践

  1. 脚本开头有 #!/bin/bash(5)
  2. 变量命名清晰(如 ARCHIVE_DIR)(5)

文档与讨论

  1. README 含使用示例(5)
  2. 准确回答“为何 -newermt 更可靠”(如避免时区/夏令时问题)(5)
项目作业上传说明
第1步:上传你的作业压缩包
第2步:等待讲师一对一批复
第3步:查看讲师点评
上传作业

登录后查看更多作业,立即

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师