CalcGuide · 技术博客主页 / 一页纸学习计划
🔥极高

Linux 开发环境:从命令行入门到独立管理开发环境

分类:工程技术 · 路径:docs/topics/linux-dev-env/README.md

#linux#shell#dev-env#foundation

用 4~8 周从零基础学会 Linux 命令行、用户权限、systemd、网络配置和 SSH 自管理开发环境

父主题

顶层主题

子主题(0)

Linux 开发环境:从命令行入门到独立管理开发环境

0. 元信息


1. 学习路线

终端与路径
  → 文件与文本处理
  → 用户、组与最小权限
  → 进程、日志与 systemd
  → 网络诊断与 SSH
  → 包管理与软件生命周期
  → 可维护 Shell 脚本
  → 服务化综合运维
  → systemd 部署 Web 服务与复盘

每一步都是下一步的前置:先在本机观察和修改,再远程操作;先手工跑通,再脚本化;先验证最小服务,再做综合部署。不要在生产主机上进行第一次实验。

2. 阶段周数分配(4~8 周,按每周投入调整)

阶段4 周冲刺6 周标准8 周稳健备注
1. 命令行入门0.5 周0.75 周1 周每天保留命令记录
2. 文件与文本处理0.5 周0.75 周1 周管道和日志是重点
3. 用户与权限0.5 周0.75 周1 周在快照环境练 sudo
4. 进程与 systemd0.5 周0.75 周1 周理解服务生命周期
5. 网络与 SSH0.5 周0.75 周1 周先本机,再双机
6. 包管理0.25 周0.5 周0.75 周记录包来源和版本
7. Shell 脚本0.5 周0.75 周1 周脚本必须可重复执行
8. 综合运维0.5 周0.75 周1 周手工流程转自动流程
9. 综合项目0.75 周1.25 周1.25 周含验收、文档和复盘
合计4 周6 周8 周每周至少一次复盘

3. 九阶段:核心知识、实践产出、可观察学会标准

阶段核心知识、复杂度陷阱 / 易错点实践产出可观察学会标准
1. 命令行入门shell、命令结构、路径、man、环境变量、退出码;易错点是相对路径和当前目录建立 ~/lab 实验树,记录 20 条命令不看答案完成导航、创建、复制、移动、删除和帮助查询;能解释 $?
2. 文件与文本处理findfilecatlessgrepsortuniqcutsedawk、重定向、管道;陷阱是把文本匹配当结构化解析日志统计管道:按状态码和时间段生成报告能从三份自定义日志提取统计;能定位空文件、编码、权限和大文件问题;能说明管道逐段输入输出
3. 用户与权限UID/GID、用户组、模式位、umask、sudo、ACL、属主;陷阱是直接 chmod 777 和把密钥放在可读目录创建 deploy 用户、共享组和最小权限项目目录能解释 rwx 对文件/目录的不同含义;能诊断“能看不能写”和 sudo 拒绝;不使用全局可写绕过权限
4. 进程与 systemdPID、父子进程、前后台、信号、pstopkill、unit、target、依赖、journalctl;复杂度陷阱是只看服务状态不看日志和退出码用 unit 管理一个本地 HTTP 服务,含失败重启和日志查询能启动、停止、重启、设开机启动和查看失败原因;能区分进程问题、unit 配置问题和端口冲突
5. 网络与 SSHIP/掩码、路由、DNS、端口、ipsspingdigcurl、OpenSSH 密钥;陷阱是把 DNS、连通性和应用层混为一谈双机/容器 SSH 密钥登录与 HTTP 连通性报告能按“地址→路由→端口→协议→认证”顺序排错;关闭密码登录前确认密钥和备用会话可用
6. 包管理仓库、包名、版本、依赖、apt/dpkg、升级、删除、锁定、签名;陷阱是混用发行版命令或盲目删除依赖安装 Web 服务依赖,导出包清单并完成一次安全升级能查询包来源和文件清单;能解释升级前后版本;遇到依赖错误先保存日志和状态,不随意删除系统包
7. Shell 脚本引号、变量、命令替换、条件、循环、函数、参数、set -u、退出码、trap、ShellCheck;陷阱是未引用变量和吞掉错误可重复运行的备份/健康检查脚本脚本支持参数和 --help,异常返回非零,临时文件可清理;通过 ShellCheck 或逐项解释警告
8. 综合运维配置、权限、服务、日志、网络、包和脚本的依赖;陷阱是手工改动不可追踪、无回滚从干净快照按清单重建服务并记录差异第三方能按步骤重现;故意制造端口、权限、DNS、unit 四类故障并恢复
9. 综合项目需求、unit、应用、SSH、测试、备份、文档、复盘;陷阱是只证明“本机能访问”一个 systemd 管理的 Web 服务项目README 新机器可执行;服务重启后恢复、日志可查、权限最小化、HTTP/SSH 验收证据齐全

4. 第一周任务(每天 1.5~2 小时)

Day 1 运行约定:使用 Ubuntu/Debian 虚拟机或容器,先创建快照;shell 默认 Bash,命令前显示当前目录,优先使用 man--help。记录发行版、内核、shell 版本:cat /etc/os-releaseuname -abash --version。修改系统文件前先确认路径和备份。

任务当天交付
Day 1打开终端,认识 $PWD$HOME、绝对/相对路径;练习 pwdlscdmkdirtouchcpmvrm;查询 mannotes/day1.md:环境信息、命令和退出码示例
Day 2文件树、隐藏文件、通配符、findfiledudf;用快照练习恢复一份目录清单和磁盘占用报告
Day 3less、重定向、管道、grepsortuniqwc;阅读 /var/log 中可读日志三条日志统计管道及逐段解释
Day 4用户/组、idwhoamichmodchownumask;只在实验目录使用 sudo权限矩阵:用户、组、其他者的读写执行结果
Day 5pspgrepjobs&kill、信号;用 journalctl 查看系统或用户日志一个进程生命周期实验记录
Day 6ip addrip routess -lntcurl、DNS 查询;本机启动一个临时 HTTP 服务网络排错四步记录和 HTTP 响应
Day 7Linux 环境健康检查项目:汇总主机、磁盘、端口、用户和服务信息,输出一份报告一份可执行脚本 + 测试记录

Day 7 项目执行次序(避免一次堆叠)

零基础 Day 7 按两步推进,每一步独立可验证。

步骤 A —— 最小可用版本(预计 60~90 分钟)

  1. 脚本输出主机名、当前用户、发行版、磁盘使用率;
  2. 增加监听端口和指定服务状态(服务不存在时只提示,不崩溃);
  3. 用当前机器一组正常数据运行;
  4. bash -n health.sh && bash health.sh 验证语法和运行。

步骤 B —— 补齐四类边界 / 异常(预计 30~45 分钟)

#用例期望行为
B1空或不存在的服务名给出提示并返回可解释状态,不展开危险 sudo
B2磁盘接近阈值报告警告,不修改文件
B3无监听端口 / 网络不可达区分“没有监听”和“网络不可达”
B4非 root 运行不依赖 root 的检查继续运行,权限不足明确标注

进阶检查:步骤 A、B 稳定后,再运行 shellcheck health.sh,并按警告修正;不要把 set -euo pipefail 当作不理解错误处理的替代品。

5. 阶段通用验收(每一阶段都必须通过)

  1. 不看答案独立重写核心命令、配置或脚本;
  2. 用自己的话解释该知识“解决什么问题、为什么有效”;
  3. 画一张图:文件权限、进程树、unit 依赖或网络路径;
  4. 测试空数据、最小值、最大值、异常输入;
  5. 准备至少 3 组自定义数据或故障场景并贴出实际输出;
  6. 记录命令/脚本复杂度、资源开销或权限影响;
  7. 能修改已有脚本或服务(加功能、修故障、调配置),而不是只能照抄。

交付物统一放进阶段项目的 notes/ 或 README:命令输出、图、故障复盘和配置差异不要散落在聊天或临时目录。

6. 最终验收(学完全部九阶段后)

7. 综合项目

首选:用 systemd 部署一个 Web 服务(必做:本机或实验 VM 部署、HTTP 访问、服务重启恢复、日志查询和 SSH 验收;GUI/监控面板为可选)。

备选:搭建 LAMP/LNMP;构建一个带预装工具、非 root 默认用户和初始化脚本的开发 VM 镜像。

任何综合项目都必须包含:

  1. 需求说明:服务用途、端口、运行用户和输入输出;
  2. 数据结构/组件选择理由:目录布局、进程模型、依赖和资源开销;
  3. 核心流程说明:安装、配置、启动、健康检查、回滚;
  4. 模块化源码或配置:脚本、unit、配置文件分离;
  5. 边界测试:端口占用、权限不足、服务失败、无网络、空输入;
  6. 部署说明:包版本、命令、环境变量和清理步骤;
  7. README:目录结构、运行、验收、故障排查;
  8. 复盘记录:用时、难点、权限/安全取舍、下一步。

项目内交付物随项目代码放在 notes/design.mdtest.mdretrospective.md。安全底线:不把私钥、密码或生产凭据提交到仓库;服务尽量使用专用非 root 用户,unit 中明确工作目录和重启策略。

8. 推荐开源资料(按角色分工,避免堆链接)

角色资料链接用法
中文友好入门Linux 命令大全(菜鸟教程)https://www.runoob.com/linux/linux-tutorial.html先查命令基本用法,再回到本机验证;不把教程示例当安全默认值
中文友好练习Linux Journeyhttps://labex.io/zh/learn/linux用交互实验建立命令行、权限和网络直觉
课程与实验MIT Missing Semesterhttps://missing.csail.mit.edu/补 shell、工具、调试和自动化;中文翻译仅作辅助
官方文档man7、GNU Coreutils、systemd、OpenSSH、Debianhttps://man7.org/linux/man-pages/ · https://www.gnu.org/software/coreutils/manual/ · https://www.freedesktop.org/wiki/Software/systemd/ · https://www.openssh.com/manual.html · https://www.debian.org/doc/manuals/debian-reference/以手册和发行版文档确认参数、版本与安全边界
源码对照coreutils、systemd、OpenSSH portablehttps://github.com/coreutils/coreutils · https://github.com/systemd/systemd · https://github.com/openssh/openssh-portable自己跑通后只读相关命令/模块;先看 LICENSE,按 GPL-3.0/LGPL/BSD 等条款使用
可视化ExplainShell、OverTheWire Bandit、Cockpithttps://explainshell.com/ · https://overthewire.org/wargames/bandit/ · https://cockpit-project.org/ExplainShell 拆命令,Bandit 做安全练习,Cockpit 观察服务/资源;不替代 CLI

默认顺序:中文入门建立概念 → man/官方文档核对 → 在快照环境独立操作 → 故意制造故障 → 读源码对照 → 写脚本和 README。开源仓库使用前必须查看对应 LICENSE,默认阅读思路后自行重写。


9. 学习资料汇聚(v0.3 自包含)

本节内容由本计划生成,基于公开资料的整理与示范,不复制第三方教材。大型标准文档以链接形式引用;附件目录目前仅保留占位文件。

9.1 背景与动机

9.2 概念地图

flowchart LR
    Shell[Shell 与命令]
    FS[文件系统与文本]
    U[用户/组/权限]
    P[进程与信号]
    S[systemd 服务]
    N[网络/端口/DNS]
    SSH[SSH 远程管理]
    PM[包管理]
    SH[Shell 脚本]
    APP[Web 应用]
    Shell --> FS
    FS --> U
    U --> P
    P --> S
    N --> SSH
    PM --> APP
    S --> APP
    N --> APP
    FS --> SH
    SH --> S
    SSH --> S

关系说明:Shell 是控制入口;文件和文本是输入输出基础;用户/组决定谁能操作文件和服务;进程是运行时实体,systemd 提供服务生命周期;网络把服务暴露给客户端,SSH 提供远程控制;包管理提供软件来源,脚本把可重复流程连接起来。

9.3 基础知识讲解

主推(中文友好):

资料角色评分链接
Linux Journey 中文交互式入门4https://labex.io/zh/learn/linux
菜鸟教程 Linux命令行中文速查4https://www.runoob.com/linux/linux-tutorial.html

官方/备查:

资料角色评分链接
MIT Missing Semestershell、工具与自动化课程4https://missing.csail.mit.edu/
man7 Linux man-pages系统调用和命令手册入口4https://man7.org/linux/man-pages/
Debian Reference发行版管理参考4https://www.debian.org/doc/manuals/debian-reference/
systemd 文档unit、journal 和服务接口4https://systemd.io/

缺失部分:本主题不重写每条命令的完整手册;遇到版本差异时,以实验机 man 和发行版官方文档为准。

9.4 经典问题与经典案例

#问题为什么重要最简答案
1Permission denied权限问题是环境故障的高频根因依次看 id、属主/组、模式位、ACL、父目录和挂载选项;不要直接 chmod 777
2服务显示 failed“进程没起来”和“systemd 配错”需要区分先看 systemctl statusjournalctl -u name、退出码、配置和端口
3能 ping 但 curl 失败ICMP、TCP、DNS、HTTP 属于不同层按地址、路由、端口、协议、认证逐层测试
4SSH 密钥登录失败远程锁死主机会造成数据和时间损失保留第二会话;检查私钥权限、authorized_keys、sshd 日志和用户家目录权限
5脚本偶发失败未引用变量、管道状态和工作目录常隐藏问题使用绝对/脚本目录、明确退出码、引用变量并用 ShellCheck
6apt 依赖冲突盲目删除包可能破坏系统保存包状态,查看候选版本和依赖关系,再决定升级、降级或回滚
7磁盘满但找不到大文件文件已删除但仍被进程打开也会占空间du 查目录,df 查文件系统,必要时用 lsof +L1
8root 能运行、普通用户不能root 绕过权限会掩盖真实部署缺陷用目标运行用户复现,修正目录、环境变量和 unit 的 User=

9.5 学习难点

概念难点

难点为什么会卡突破路径
文件权限与目录权限目录的执行位表示穿越,不是运行目录给同一目录设置四种模式,用不同用户逐项测试
进程、服务、unit 的关系一个概念描述运行实体,一个描述管理配置画 PID→父子进程→unit→journal 的对应图
DNS、路由、端口、HTTP“网络不通”把多个层混在一起每次只验证一层并记录命令和结果

思维难点

难点为什么会卡突破路径
从手工操作到可复现手工成功不代表别人能重复每次操作都记命令、前置条件、输出和回滚
最小权限方便的 root/777 会让问题暂时消失先定义运行用户和资源边界,再授权最小能力
故障排错顺序看到错误就随机改配置按“事实→假设→最小实验→证据”循环

工程难点

难点为什么会卡突破路径
systemd unit配置项多且错误常在日志中先写最小 unit,再加环境、重启和资源限制,每次 daemon-reload 后验证
Shell 错误处理默认 shell 可能继续执行坏状态明确参数检查、退出码、trap 清理和日志输出
SSH 安全变更改错 sshd 会失去远程入口用本地控制台/第二 SSH 会话验证,修改后先 sshd -t

9.6 技术标准与接口

9.6.1 Entity

名称版本/状态发布组织许可证 / 可访问性
POSIX.1IEEE Std 1003.1-2017,持续维护IEEE / The Open Group在线规范与手册可查,正式标准部分可能收费
Linux man-pages持续更新Linux man-pages projectGPL-2.0 / 可在线阅读
GNU Coreutils持续更新GNU ProjectGPL-3.0-or-later
systemd持续更新systemd projectLGPL-2.1-or-later,部分组件有其他兼容许可
OpenSSH持续更新OpenBSD / OpenSSH projectBSD 风格许可证及组件许可
Debian Policy / APT发行版规范持续更新Debian projectDFSG 自由软件,在线公开

9.6.2 Scope

9.6.3 Structure

9.6.4 Ecosystem

9.6.5 Depth Tiers

层级名称必须看到什么
L0知道存在知道 shell、文件权限、进程、systemd、SSH、包管理分别解决什么问题
L1看得懂示例能读懂常见命令、权限串、unit、SSH 命令和日志片段
L2能正确调用能独立执行文件/文本管道、用户权限配置、服务控制、网络检查和密钥登录
L3能解释与排错能按层定位权限、进程、unit、DNS、端口、认证和依赖故障,并用证据修复
L4能设计与扩展能设计可复现、最小权限、可回滚的开发主机或服务环境,并为新发行版适配流程

本计划要求综合项目达到 L3;能完成开发 VM 镜像或多发行版适配时达到 L4。

9.6.6 Source

10. 常见误区

11. 所有知识点分类(统一规则)

后续新增主题按以下统一分类;一个主题可有一个主分类和一个辅助分类:

  1. 编程语言:C、Java、Python、JavaScript 等;
  2. 数据结构与算法:排序、查找、图、动态规划等;
  3. 计算机基础:操作系统、网络、数据库、组成原理等;
  4. 工程技术:Git、Linux、Docker、测试、CI/CD 等;
  5. Web 与后端:HTTP、REST、Spring Boot、数据库开发等;
  6. 前端与客户端:HTML/CSS、JavaScript、React、移动开发等;
  7. 数据与人工智能:SQL、机器学习、深度学习、数据分析等;
  8. 项目与职业能力:软件设计、调试、代码规范、技术写作等。

本计划归属:工程技术 主 + 计算机基础 辅。


引用

直接依赖(0)

查看知识图谱 · 热度 🔥极高