
很多人在第一次接触 Linux 作业时最容易陷入一种奇特的困境一边对着教程敲命令一边完全不知道自己在做什么。窗口里滚动的字符好像都认识但组合在一起就变成了天书。最后作业交上去了自己却说不清楚每一步到底完成了什么。我见过太多这样的案例包括当年的我自己。这篇内容就是写给准备做或正在做 Linux 第一次作业的同学帮你把这一步踩实搞清楚作业背后真正考察的东西建立起一个能迁移到后续嵌入式、运维或后端开发场景的基础框架。1. 第一次 Linux 作业究竟在考察什么很多同学以为 Linux 作业就是记住一堆命令然后敲出来这其实是个误解。我第一次批改类似作业时发现一个典型现象有人能默写出ls -l的所有参数但问他你当前在哪个目录、这个目录里有哪些文件、这些文件分别是什么权限就懵了。这说明作业真正要考察的不是命令背诵量而是你对文件系统权限模型进程与用户这三个底层概念的直观理解。1.1 命令只是表达方式系统逻辑才是核心Linux 最反直觉的一点是你几乎所有的操作本质上都是在读写文件。这句话听起来简单理解透了会打开新世界。你以为你是在修改 IP 地址其实你是往/etc/network/interfaces或/etc/sysconfig/network-scripts/ifcfg-*这个文件里写了几行文本你以为你是在增加一个用户其实你是通过useradd命令去更新了/etc/passwd、/etc/shadow等几个文件你以为你是在启动一个服务其实你是让系统去执行某个目录下的一个可执行文件。所以第一次作业里的cd、ls、cat、mkdir、rm这些都不是孤立的命令而是一套你在文件系统里移动和操作对象的基本动作。做作业时尝试把每一条命令翻译成一句大白话比如cd /etc就是把当前工作目录切换到 /etc 这个文件夹cat passwd就是把 /etc 目录下的 passwd 文件内容打印到屏幕上。一旦建立了这种翻译习惯后面看任何文档、任何脚本都会快很多。1.2 环境选择真机、虚拟机还是 WSL第一次做 Linux 作业普遍绕不开一个问题我在哪儿跑 Linux环境优点缺点适用场景虚拟机VMware / VirtualBox隔离安全快照可回滚最接近真实服务器占用内存和磁盘图形性能一般课程作业、实验、需要破坏性测试WSLWindows Subsystem for Linux启动快与 Windows 文件互通占资源少与真实内核环境有差异部分系统级操作受限简单练习、脚本编写、轻度运维命令云服务器阿里云/腾讯云轻量真实生产环境24 小时在线可练习部署需要花钱有被入侵风险部署类作业、个人网站、后续进阶物理机直接安装性能最好体验最完整装坏了可能影响日常使用不推荐第一作业就上从我带过的学生经验看第一次作业首选虚拟机。原因只有一个快照功能能救命。你做个rm -rf练手或者不小心把PATH环境变量搞乱了快照一秒还原不用重装系统。WSL 更适合你已经对 Linux 有基本认知、想在 Windows 上顺手练练命令的场景但 WSL 的启动方式、文件系统布局和真实发行版有一些差异比如 WSL 默认用户是 root 权限但很多发行版不是这容易让初学者混淆权限概念。1.3 镜像版本选择别在第一个岔路口迷路镜像版本这事儿真心建议别太纠结。网上吵 Ubuntu 和 CentOS 谁更好那是生产环境选型的话题和第一次作业没关系。作业场景下我的建议很直接如果你用的是 VMware 或 VirtualBox就选 Ubuntu LTS长期支持版比如 22.04 或 24.04。理由有三社区资料最多遇到问题搜一下基本都有答案软件源默认配置合理装 Python、GCC 时依赖问题最少图形界面做得友好文件管理器、浏览器开箱即用降低上手挫败感。如果你装的是 Debian尤其是看到热搜词里的debian gnu/linux 13 (trixie)说明你已经在追比较新的版本线了。Debian 稳定性和资源占用确实出色但初次上手时部分多媒体解码器、无线网卡驱动可能需要手动处理对新手不算友好。建议第一次作业先用 Ubuntu等作业交完、想认真折腾服务器时再切 Debian。注意Windows 更新子系统安装向导报错提前结束这类问题大概率不是 Linux 本身的问题而是 Windows 功能开关没开全。去启用或关闭 Windows 功能里勾选适用于 Linux 的 Windows 子系统和虚拟机平台重启后再装八成能解决。2. 上手前必须搞懂的文件与权限体系第一次作业里出现频率最高的操作就是ls -l和chmod但很多人只是机械地在敲并不清楚屏幕上的每一列代表什么。这里我把文件系统这套逻辑彻底拆开讲一次。2.1 从根目录开始的树形结构Linux 没有 Windows 那样的 C 盘、D 盘概念它是一棵从/开始的树。你cd /一下然后用ls看看会发现一堆目录bin、etc、home、usr、var、tmp、dev、proc等等。刚开始记不住没关系但有几个关键目录必须形成条件反射/etc配置文件目录系统绝大多数软件的配置都在这。改配置基本就是改这个目录下的文本文件。/home普通用户的家目录。你在终端里用的那个用户家目录通常是/home/用户名。你自己创建的文件、下载的东西默认都该放在这里。/var日志和动态数据。排障时最常看的/var/log/syslog、/var/log/messages就在这。/tmp临时文件目录系统重启后里面的内容会被清空。/rootroot 用户的家目录。理解这棵树之后路径问题就顺了。/开头的是绝对路径比如/home/user/test.txt不带/的是相对路径基于你当前所在的目录。初次做作业时建议强制自己在一段时间内只用绝对路径虽然敲起来啰嗦但能迅速建立我在文件系统哪个位置的方位感。等方位感稳了再用相对路径和..上一级目录来简化操作。2.2 权限的 9 个字符一次看明白ls -l的输出里第一列比如drwxr-xr-x很多人就卡在这。拆解起来其实很简单第一个字符是文件类型d是目录-是普通文件l是符号链接后面 9 个字符分成三组每组 3 个分别表示属主权限、属组权限、其他人权限。每组里的 3 个字符依次是读r4、写w2、执行x1没有权限就是-。所以你看到-rw-r--r--就意味着这是个普通文件属主可读可写属组和其他人都只能读。为什么执行权限单独用一个x因为 Windows 里靠扩展名.exe判断能不能运行Linux 则看有没有执行位。这就是为什么你写完一个.sh脚本直接./test.sh会提示 Permission denied得先chmod x test.sh才能跑。如果作业里有创建脚本并执行的要求这一条几乎是必考的坑。权限的数字表示法也顺带讲清楚r4、w2、x1每组三个数相加。chmod 755 file就是把属主设为 7rwx、属组设为 5r-x、其他人设为 5r-x。你在作业里写的chmod 777虽然能跑但生产环境里这是非常危险的操作意味着任何人都能改这个文件所以练习时尽量养成按需分配权限的习惯。2.3 用户、组与sudo的前世今生第一次作业大概率会让你建一个新用户或者用sudo执行某条命令。这两件事背后是同一个问题Linux 是典型的多用户系统一切权限都挂在用户身份上。sudo的原理是你以普通用户身份登录临时切换到 root 权限去执行某条命令。为什么需要这样因为日常操作如果用 root误删一个系统文件就可能导致系统崩溃而sudo只让特定命令以高权限运行降低了风险系数。第一次作业里你可能会用到sudo apt update、sudo vim /etc/xxx这类命令。如果sudo提示当前用户不在 sudoers 里需要先切到 root 用户su -然后用visudo给用户加权限。visudo是编辑 sudo 配置文件的专用命令注意它不让你用普通编辑器直接改/etc/sudoers就是为了防止语法错误导致整个 sudo 系统瘫痪。新建用户这块记住一组黄金命令组合sudo useradd -m -s /bin/bash 新用户名 # 创建用户并同时创建家目录、指定默认 shell sudo passwd 新用户名 # 设置密码 sudo usermod -aG sudo 新用户名 # 将用户加入 sudo 组Ubuntu 里这组有提权能力作业里如果要求新建用户并让其能执行 sudo上面三条就是标准答案。-m参数很多人会漏不写的话该用户没有/home/用户名目录登录进去会落在根目录非常别扭。3. 高频命令的地图先建立功能索引再谈熟练掌握Linux 命令少说有上千条但第一次作业真正要用的翻来覆去就那么二十几条。与其拿着一本书从头背不如按功能建立一张心智地图。这张地图是我做运维时的经验总结也是我给每个初学者的第一份清单。3.1 文件和目录操作你的一切行为都发生在文件树上pwd # 当前在哪 ls -l # 当前目录下有什么、权限如何 ls -a # 查看隐藏文件以 . 开头 cd /路径 # 切换目录 mkdir -p a/b/c # 递归创建多级目录 touch file.txt # 创建空文件或刷新文件时间戳 cp -r 源 目标 # 复制目录必须加 -r否则报错 mv 源 目标 # 移动或重命名 rm -rf 路径 # 强制删除危险删除前先 pwd 确认自己不在根目录 cat filename # 查看文件内容 less filename # 分页查看大文件按 q 退出 head -20 / tail -20 # 看首尾 N 行日志排查时常用这里面最容易出事故的是rm -rf。我至今保留一个习惯也是强烈建议你养成的在终端里执行删除命令前先敲pwd看一眼自己到底在哪个目录。我见过不止一个学生把rm -rf /home/user/*写成rm -rf / home/user/*注意/后面多了个空格然后系统文件被一把梭掉只剩一个还在运行的 shell。血泪教训不是吓唬人。3.2 文件内容处理从grep开始学会找东西第一次作业经常有查找某个文件里包含某关键词的行之类的题目。标准工具是grepgrep 关键词 /path/to/file # 精确查找 grep -i 关键词 /path/to/file # 忽略大小写 grep -r 关键词 /path/to/dir # 在目录里递归查找 grep -n 关键词 /path/to/file # 显示行号还有一个高频组合是|管道符。它的意思很简单把前面命令的输出塞给后面的命令当作输入。比如ls -l | grep txt就是先列出目录内容再把包含 txt 的行筛选出来。管道符是 Linux 哲学里小工具组合成大能力的代表作业里只要出现筛选统计类需求十有八九要用到它。配合wc -l可以统计行数cat file | wc -l。有些教程会教你用ps aux | grep 进程名来找进程这个套路在作业里也常见但有一点必须提醒grep本身也会出现在结果里因为它的命令行里包含你要查的关键词。解决方法是再grep -v grep把这条过滤掉或者用更专业的pgrep。这些小细节批改作业时特别容易成为扣分点。3.3 系统状态查看从top和df感受系统脉搏作业要求查看系统进程/查看磁盘使用情况的话对应的就是进程与资源这块top # 动态查看进程和 CPU/内存占用按 q 退出 free -h # 查看内存使用-h 是 human 可读 df -h # 查看磁盘分区使用情况 du -sh /目录 # 查看目录占多大空间 uname -a # 查看内核版本信息 hostnamectl # 查看主机名、系统版本等信息 ps aux # 查看静态进程快照 kill -9 进程PID # 强制结束进程慎用只在自己明确知道 PID 归属时用这里我强烈建议把top和free这两个命令打开看着屏幕上的数字去理解系统资源是有限的这个事实。有些作业会让用 top 找到 CPU 占用最高的进程很多人只是照抄命令但是没想过这个进程为什么会占这么高。如果你做完作业能顺带回答一句这个进程是做什么用的、它占资源是否合理就已经超过了一大半的同级同学。3.4 网络相关验证连通性就够了第一次作业涉及网络的题通常很浅比如查看 IP 地址测试能否连通某主机。ip addr # 查看本机网卡和 IP新命令替代 ifconfig ip route # 查看路由表 ping -c 4 baidu.com # ping 测连通性-c 指定次数否则会一直 ping 下去ping有个新手常踩的坑不写-c参数就永远停不下来得按CtrlC手动终止。在脚本里如果写了不合适的ping很容易卡死整个脚本流程。另外ping通不代表服务通它只证明主机在网络层能到达端口是否开放还需要telnet或curl来测不过第一次作业不会深挖到这层。4. 一个能直接交作业的完整案例从建目录到写脚本光讲命令不讲串联等于学了一堆零件不会组装。这一节我把一次典型的 Linux 初次作业完整走一遍从需求到落地每一步都解释为什么要这么做。你可以直接照着敲也可以在这个基础上改动成自己的作业版本。4.1 场景设定与前置准备假设作业要求如下在系统里新建一个用户devops为该用户创建一组目录结构写一个 shell 脚本输出系统基本信息并赋予脚本执行权限最后切换到该用户执行脚本并验证结果。前置条件你已经在虚拟机里装好了 Ubuntu并且有一个能使用sudo的普通用户。如果还没有回头去看第 1.3 节。4.2 逐步操作与每一步的意图解释第一步创建用户并设置密码。这一条命令同时完成了创建用户和创建家目录两件事sudo useradd -m -s /bin/bash devops sudo passwd devops这里的-m保证家目录/home/devops被创建-s /bin/bash设置默认 shell 为 bash。没有-s参数的话有些发行版会默认使用/bin/sh虽然也能跑但交互体验差不少。set 完密码后建议验证一下ls -l /home看看目录是否出现。第二步创建目录结构。切换进/home/devops建三个子目录分别放代码、日志、脚本sudo mkdir -p /home/devops/{code,logs,scripts} sudo chown -R devops:devops /home/devops第二条命令很关键。useradd创建出来的家目录属主默认是devops没错但你已经用sudo执行命令了如果后续直接用devops用户去操作可能因为权限问题写不进目录。所以趁sudo还在直接chown -R把整个家目录归属给devops一劳永逸。第三步写脚本。脚本内容是显示当前系统信息sudo vim /home/devops/scripts/sysinfo.sh文件内容如下#!/bin/bash echo 当前用户: $(whoami) echo 主机名: $(hostname) echo 系统版本: $(cat /etc/os-release | grep PRETTY_NAME) echo 内核版本: $(uname -r) echo 当前时间: $(date) echo 磁盘空间: df -h | head -5#!/bin/bash这行叫 shebang它告诉系统用哪个解释器来执行这个脚本。不写这行直接./sysinfo.sh可能会用错误的 shell 解析出现莫名其妙的报错。$(...)是命令替换意思是把括号里命令的输出当作字符串拼到 echo 里。date命令打印当前时间这个脚本每次执行时输出都会不同。第四步赋予执行权限然后验证chmod x /home/devops/scripts/sysinfo.sh /home/devops/scripts/sysinfo.sh如果执行时出现Permission denied多半是chmod没执行成功或者你在执行时用了别人的身份。确认一下文件的属主和权限ls -l /home/devops/scripts/sysinfo.sh应该看到-rwxr-xr-x这样的输出。第五步切换用户执行su - devops /home/devops/scripts/sysinfo.shsu - devops的-参数表示同时切换环境变量、家目录相当于完全以 devops 身份登录。不加-只是切换用户身份环境变量还是旧用户的用时间长了容易踩命令找不到这种坑。建议养成都用su -的习惯或者直接用sudo -i -u devops。4.3 作业完成后如何自查作业做完别急着关虚拟机。可以按下面这个清单过一遍等于提前做了老师会做的检查id devops确认用户已创建且在正确的组里。ls -la /home/devops确认目录结构完整。bash -n /home/devops/scripts/sysinfo.sh检查脚本语法是否正确。这个-n参数很重要它只做语法检查不执行代码写脚本多的人每改完一版都该跑一次。以devops身份执行脚本确认输出里每一行都和预期一致。提示把终端里的操作过程完整复制下来存成一份.md或.txt文件。交作业时附上操作记录 最终效果截图 遇到的问题与解决过程这份作业的完整度会显著高于只提交一张成功截图的人。老师更看重的是思考过程不是结果本身。5. 第一次作业最容易翻车的四个场景把此前看到的各类作业案例汇总一下共性翻车点出奇地一致。这一节专门讲讲这些坑长什么样以及背后的原因。5.1 虚拟机安装直接蓝屏或卡死在引导界面这个和 Linux 本身关系不大十有八九是虚拟机软件的虚拟化加速没生效。VMware 或 VirtualBox 默认会调用 CPU 的虚拟化指令VT-x/AMD-V但 Windows 的 Hyper-V 或内存完整性功能可能会抢占这部分资源导致虚拟机无法正常启动。热搜词里那条虚拟机安装蓝屏多半就是这种情况。排查思路是固定的先去 BIOS 确认虚拟化开关打开再去 Windows 功能里看 Hyper-V 是否处于启用状态如果启用了且暂时用不到关掉重启最后关掉 Windows 安全中心里的内核隔离-内存完整性。这三个地方都检查过蓝屏概率会大幅下降。5.2 换源后apt update报公钥错误或索引失效国内网络环境下载官方源慢是常态所以很多教程会教你把 Ubuntu 或 Debian 的源换成清华、阿里云。思路本身没问题但新手改源后很容易出现GPG error或者404 Not Found。核心原因通常是两个一是源地址和系统版本不匹配比如你用的是 Ubuntu 24.04却复制了 22.04 的源二是改完源没有执行sudo apt update重新拉取索引。换源的操作本身其实只有两步备份原配置sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak然后用新源内容替换原文件。改完必须立即sudo apt update看是否报错。遇到公钥报错时不要盲目禁用签名校验这会有严重的安全隐患正确做法是找到对应源站点提供的公钥导入命令或者直接改用 HTTPS 的官方镜像源。如果想省事直接去清华 TUNA 或阿里云镜像站的帮助页面复制对应系统版本的完整配置不要凭记忆手写。5.3sudo执行后找不到命令或command not found出现这个情况通常是两种原因。第一命令所在的目录不在当前用户的PATH环境变量里比如某些软件装到了/usr/local/bin但你的PATH里没包含它。排查用which 命令名找到路径后用绝对路径执行。第二sudo的环境变量默认会被重置所以有些普通用户能用的命令在 sudo 下反而找不到。解决方法是sudo -E保留环境变量或者在/etc/sudoers里设置env_reset以外的参数生产环境慎用这里不展开。如果第一次作业里遇到command not found优先级最高的动作永远是which和echo $PATH把这两条一跑问题基本就定位了。5.4 日志文件疯狂增长把磁盘写满作业或练习过程中如果跑了一些循环脚本或者启动了某些服务日志可能会在短时间内快速膨胀直到df -h看到根分区占用 100%。这种情况在第一次作业的虚拟机里不算少见。排查和清理的思路是df -h # 确认是否真的满了 du -sh /var/log/* 2/dev/null | sort -rh | head # 找出大文件定位到具体日志文件后可以临时清空它sudo truncate -s 0 /var/log/xxx.log注意用truncate而不是直接rm因为服务进程还握着文件句柄直接删文件不一定能释放空间反而可能导致进程异常。这一步做完虚拟机基本就救回来了。6. 作业之后的下一步从会敲命令到会用系统顺利交完第一次作业后你对 Linux 已经有了一个初步的、看得见摸得着的认识。但坦白讲这只是趟了一遍水的深度。如果后续想往嵌入式 Linux、运维、后端服务器管理方向走有几条进阶路径是完全可以预见的。6.1 掌握vim别做图形界面的温室花朵第一次作业里你可能已经用过了vim但只是进去写几行字就退出。强烈建议认真花一两天时间把vim的使用逻辑搞清楚因为它几乎存在于所有 Linux 服务器上而图形编辑器不一定。掌握这几个模式的概念就够起步了普通模式默认、插入模式i进入、命令模式冒号开头。退出和保存的肌肉记忆请直接刻进脑子里ESC后输入:wq保存退出:q!不保存强制退出。说句题外话很多生产环境排障时你面对的就是一个没有图形界面的终端手边只有vi到时候临时查怎么退出 vim会非常狼狈。6.2 理解 shell 脚本的变量与条件判断第一次作业的脚本输出系统信息本质上只是把一堆echo拼在一起还没有真正涉及脚本的逻辑能力。下一步可以试着往脚本里加变量、循环和判断。比如统计当前目录下所有.log文件的个数#!/bin/bash count0 for file in *.log; do if [ -f $file ]; then count$((count1)) fi done echo 日志文件数量: $countfor循环、if [ ]条件判断、变量赋值这三个要素撑起了脚本编程的基本骨架。学会了这些你已经可以写一些解决实际问题的工具脚本了不再是命令的搬运工。6.3 了解服务管理systemd才是你绕不开的大管家作业阶段你大概知道service 服务名 start可以启动服务但这背后的机制值得深入。现代主流发行版都使用systemd来管理系统服务。以后你部署一个网站、挂一个数据库、跑一个定时任务本质上都是在和systemd打交道。第一次作业交完可以花点时间看看systemctl status的输出理解什么是服务单元unit什么是restart、enable、disable。这个知识点是很多运维故障排查的起点也是从桌面用户迈向服务器管理员的一道分水岭。6.4 顺着热搜词里的方向去探索你搜索时可能已经看到这些方向嵌入式 Linux 项目、Linux 进程间通信、Linux 运维故障案例、Linux 系统安装 Python。这些并不是并列的随机词而是 Linux 生态里的几个主要方向的入口。嵌入式 Linux往底层走涉及交叉编译、内核裁剪、设备树需要的知识栈是 C 语言 硬件理解 Linux 系统原理。运维方向往工程化走涉及 Shell/Python 脚本、服务部署、监控、日志分析、故障排查核心能力是找到问题根因。应用开发方向在 Linux 上做后端开发涉及 GCC、Makefile、进程管理、网络编程核心是理解程序和系统如何交互。第一次作业建立的文件系统 权限 进程 命令工具这个地基不管未来走哪个方向都用得上。这也是为什么我坚持认为第一次作业的意义远大于那个分数——它是你和一台真实操作系统建立协作关系的第一步。最后分享一个个人经验在刚学 Linux 的前两周强迫自己所有日常操作都开终端完成不要用图形界面的文件管理器去拖拽粘贴。删文件用rm、复制用cp、重命名用mv刚开始会慢得让人想摔键盘但两周后你会发现自己对系统的掌控感和理解深度是那些一直用图形界面的同学没法比的。这个习惯一旦养成后面学什么都顺。