Files
linux-practice/COURSE_TASKS_v2.json
likingcode 5686831d9a feat: Linux练习平台
- Web界面Linux命令练习
- Python后端 + sandbox安全沙箱
- 课程和任务管理
2026-03-07 05:43:51 +00:00

315 lines
12 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"meta": {
"version": "2.0",
"title": "Linux 运维工程师成长路径",
"author": "PMClaw",
"updated": "2026-03-06",
"description": "从新手到高手,系统学习 Linux 运维技能"
},
"levels": [
{
"id": "level_1_intro",
"title": "🌱 Level 1: 入门篇 - 熟悉终端",
"description": "掌握最基本的 5 个命令,快速上手 Linux 终端",
"challenges": [
{
"id": "pwd_1",
"title": "我在哪?",
"description": "使用 <code>pwd</code> 命令查看你当前所在的目录",
"hint": "直接输入 pwd 回车",
"success_test": "output.strip() == '/'",
"solution": ["pwd"],
"success_msg": "🎉 恭喜你!你学会了第一个 Linux 命令!"
},
{
"id": "ls_1",
"title": "看看周围",
"description": "使用 <code>ls</code> 命令列出 <code>/sandbox</code> 下的所有子目录和文件",
"hint": "输入 ls /sandbox",
"success_test": "'users' in output and 'projects' in output",
"solution": ["ls /sandbox", "ls /"],
"success_msg": "👀 很好!你能看到周围的文件了"
},
{
"id": "cd_1",
"title": "进入用户区",
"description": "使用 <code>cd</code> 命令进入 /users 目录",
"hint": "先 cd 进去,再用 pwd 确认",
"success_test": "cwd == '/users'",
"solution": ["cd /users"],
"success_msg": "🚶 移动成功!你学会了在目录间穿梭"
},
{
"id": "cat_1",
"title": "读取文件",
"description": "使用 <code>cat</code> 命令读取 /users/alice.txt 的内容",
"hint": "cat /users/alice.txt",
"success_test": "'Alice' in output and 'Linux' in output",
"solution": ["cat /users/alice.txt"],
"success_msg": "📖 阅读成功!文件内容已掌握"
},
{
"id": "echo_1",
"title": "输出文字",
"description": "使用 <code>echo</code> 命令输出 'Hello Linux'",
"hint": "echo Hello Linux",
"success_test": "'Hello Linux' in output",
"solution": ["echo Hello Linux"],
"success_msg": "📢 声音洪亮echo 命令已掌握"
}
]
},
{
"id": "level_2_file",
"title": "📁 Level 2: 文件操作 - 管理文件系统",
"description": "学习创建、删除、复制、移动文件和目录",
"challenges": [
{
"id": "mkdir_1",
"title": "创建目录",
"description": "在 /tmp 下创建一个名为 'mydir' 的目录",
"hint": "mkdir /tmp/mydir",
"success_test": "exists('/tmp/mydir')",
"solution": ["mkdir /tmp/mydir"],
"success_msg": "📂 目录创建成功!"
},
{
"id": "touch_1",
"title": "创建文件",
"description": "在 /tmp/mydir 下创建一个名为 'test.txt' 的空文件",
"hint": "touch /tmp/mydir/test.txt",
"success_test": "exists('/tmp/mydir/test.txt')",
"solution": ["touch /tmp/mydir/test.txt"],
"success_msg": "📄 文件创建成功!"
},
{
"id": "cp_1",
"title": "复制文件",
"description": "将 /users/alice.txt 复制到 /tmp/mydir/",
"hint": "cp /users/alice.txt /tmp/mydir/",
"success_test": "exists('/tmp/mydir/alice.txt')",
"solution": ["cp /users/alice.txt /tmp/mydir/"],
"success_msg": "📋 复制成功!文件已备份"
},
{
"id": "mv_1",
"title": "移动文件",
"description": "将 /tmp/mydir/alice.txt 重命名为 bob.txt",
"hint": "mv /tmp/mydir/alice.txt /tmp/mydir/bob.txt",
"success_test": "exists('/tmp/mydir/bob.txt') and not exists('/tmp/mydir/alice.txt')",
"solution": ["mv /tmp/mydir/alice.txt /tmp/mydir/bob.txt"],
"success_msg": "🚚 移动成功!文件已改名"
},
{
"id": "rm_1",
"title": "删除文件",
"description": "删除 /tmp/mydir/test.txt 文件",
"hint": "rm /tmp/mydir/test.txt",
"success_test": "not exists('/tmp/mydir/test.txt')",
"solution": ["rm /tmp/mydir/test.txt"],
"success_msg": "🗑️ 删除成功!文件已清理"
},
{
"id": "chmod_1",
"title": "修改权限",
"description": "给 /tmp/mydir/bob.txt 添加可执行权限",
"hint": "chmod +x /tmp/mydir/bob.txt",
"success_test": "is_executable('/tmp/mydir/bob.txt')",
"solution": ["chmod +x /tmp/mydir/bob.txt"],
"success_msg": "🔐 权限修改成功!"
}
]
},
{
"id": "level_3_text",
"title": "🔍 Level 3: 文本处理 - 数据分析师",
"description": "掌握 grep、sed、awk 等强大的文本处理工具",
"challenges": [
{
"id": "grep_1",
"title": "搜索文本",
"description": "在 /var/log/syslog 中搜索包含 'error' 的行",
"hint": "grep error /var/log/syslog",
"success_test": "'error' in output.lower()",
"solution": ["grep error /var/log/syslog", "grep -i error /var/log/syslog"],
"success_msg": "🎯 搜索成功!找到了错误日志"
},
{
"id": "head_1",
"title": "查看开头",
"description": "查看 /var/log/syslog 的前 5 行",
"hint": "head -n 5 /var/log/syslog",
"success_test": "len(output.split('\\n')) >= 5",
"solution": ["head -5 /var/log/syslog", "head -n 5 /var/log/syslog"],
"success_msg": "👀 看到了开头!"
},
{
"id": "tail_1",
"title": "查看结尾",
"description": "查看 /var/log/syslog 的最后 3 行",
"hint": "tail -n 3 /var/log/syslog",
"success_test": "len(output.split('\\n')) >= 3",
"solution": ["tail -3 /var/log/syslog", "tail -n 3 /var/log/syslog"],
"success_msg": "🔚 看到了结尾!"
},
{
"id": "wc_1",
"title": "统计行数",
"description": "统计 /var/log/syslog 有多少行",
"hint": "wc -l /var/log/syslog",
"success_test": "output.strip().isdigit() or ' ' in output",
"solution": ["wc -l /var/log/syslog"],
"success_msg": "🔢 统计完成!"
},
{
"id": "find_1",
"title": "查找文件",
"description": "在 /sandbox 下查找所有 .txt 文件",
"hint": "find /sandbox -name '*.txt'",
"success_test": "'.txt' in output",
"solution": ["find /sandbox -name '*.txt'"],
"success_msg": "🔍 查找成功!"
}
]
},
{
"id": "level_4_system",
"title": "⚙️ Level 4: 系统管理 - 运维工程师",
"description": "学习进程管理、磁盘监控、系统服务控制",
"challenges": [
{
"id": "ps_1",
"title": "查看进程",
"description": "查看当前运行的所有进程",
"hint": "ps aux",
"success_test": "'PID' in output and 'COMMAND' in output",
"solution": ["ps aux", "ps -ef"],
"success_msg": "👥 进程列表已显示!"
},
{
"id": "df_1",
"title": "磁盘空间",
"description": "查看磁盘使用情况",
"hint": "df -h",
"success_test": "'Filesystem' in output and 'Size' in output",
"solution": ["df -h"],
"success_msg": "💾 磁盘信息已获取!"
},
{
"id": "du_1",
"title": "目录大小",
"description": "查看 /sandbox 目录的总大小",
"hint": "du -sh /sandbox",
"success_test": "'sandbox' in output or 'M' in output or 'K' in output",
"solution": ["du -sh /sandbox"],
"success_msg": "📊 大小统计完成!"
},
{
"id": "free_1",
"title": "内存使用",
"description": "查看内存使用情况",
"hint": "free -h",
"success_test": "'Mem' in output and 'total' in output.lower()",
"solution": ["free -h"],
"success_msg": "🧠 内存信息已获取!"
},
{
"id": "uptime_1",
"title": "系统运行时间",
"description": "查看系统已运行多久",
"hint": "uptime",
"success_test": "'load average' in output.lower() or 'day' in output or 'up' in output.lower()",
"solution": ["uptime"],
"success_msg": "⏱️ 运行时间已显示!"
}
]
},
{
"id": "level_5_network",
"title": "🌐 Level 5: 网络运维 - 网络管理员",
"description": "掌握网络诊断、连接监控、服务配置",
"challenges": [
{
"id": "ping_1",
"title": "测试连通性",
"description": "ping 127.0.0.1 测试本地网络",
"hint": "ping -c 3 127.0.0.1",
"success_test": "'127.0.0.1' in output or 'bytes' in output or 'icmp' in output.lower()",
"solution": ["ping -c 3 127.0.0.1"],
"success_msg": "📡 网络连通!"
},
{
"id": "netstat_1",
"title": "查看端口",
"description": "查看所有监听的端口",
"hint": "netstat -tlnp",
"success_test": "'LISTEN' in output or 'tcp' in output.lower()",
"solution": ["netstat -tlnp", "ss -tlnp"],
"success_msg": "🔌 端口列表已显示!"
},
{
"id": "curl_1",
"title": "HTTP 请求",
"description": "使用 curl 访问 http://localhost:8080",
"hint": "curl http://localhost:8080",
"success_test": "'html' in output.lower() or 'http' in output.lower() or len(output) > 10",
"solution": ["curl http://localhost:8080", "curl -I http://localhost:8080"],
"success_msg": "🌐 HTTP 请求成功!"
},
{
"id": "ifconfig_1",
"title": "查看网卡",
"description": "查看网络接口配置",
"hint": "ifconfig 或 ip addr",
"success_test": "'inet' in output or 'eth0' in output or 'lo' in output",
"solution": ["ifconfig", "ip addr"],
"success_msg": "🎴 网卡信息已获取!"
}
]
},
{
"id": "level_6_advanced",
"title": "🚀 Level 6: 高级运维 - 架构师",
"description": "Shell 脚本、日志分析、性能优化",
"challenges": [
{
"id": "pipe_1",
"title": "管道操作",
"description": "使用管道 | 将 ps aux 的输出传给 grep 搜索 ssh",
"hint": "ps aux | grep ssh",
"success_test": "'|' in cmd and ('ssh' in output or 'grep' in output)",
"solution": ["ps aux | grep ssh"],
"success_msg": "🔀 管道操作成功!"
},
{
"id": "redirect_1",
"title": "重定向输出",
"description": "将 echo 'test' 的输出重定向到 /tmp/test.txt",
"hint": "echo 'test' > /tmp/test.txt",
"success_test": "'>' in cmd and exists('/tmp/test.txt')",
"solution": ["echo 'test' > /tmp/test.txt"],
"success_msg": "📤 重定向成功!"
},
{
"id": "tar_1",
"title": "压缩文件",
"description": "将 /sandbox 目录打包压缩为 /tmp/sandbox.tar.gz",
"hint": "tar -czf /tmp/sandbox.tar.gz /sandbox",
"success_test": "exists('/tmp/sandbox.tar.gz')",
"solution": ["tar -czf /tmp/sandbox.tar.gz /sandbox"],
"success_msg": "📦 压缩成功!"
},
{
"id": "cron_1",
"title": "定时任务",
"description": "查看当前用户的定时任务",
"hint": "crontab -l",
"success_test": "'crontab' in cmd",
"solution": ["crontab -l"],
"success_msg": "⏰ 定时任务已查看!"
}
]
}
]
}