期末复习时间线一拉长,最常见的状态就是对着几百条命令发愣:书翻过,课听过,实验课也敲过几条命令,但真坐到考场上,题目稍微换个场景就不知道从哪下手。Linux期末复习的难点从来不在于某个命令本身,而在于知识太散、命令太多、彼此之间的关联又太强。这篇总结我打算换个讲法,不按教科书目录平铺,而是按考试真正会涉及的几条主线——文件系统、权限、进程、网络、Shell脚本、实验环境——把知识点串起来。目标是让你复习完之后脑子里有一张地图,而不是一袋碎石子。
1. 期末复习的先后顺序:先立框架,再刷命令
1.1 Linux和Windows思维差在哪,决定了你后面能不能举一反三
很多同学复习Linux的第一反应是背命令,这是效率最低的方式。你会发现背了一堆命令,考试时换个操作系统版本、换张截图,照样不会做。原因在于,命令只是表象,底层的那套设计思想才是出题人反复考察的东西。
Linux这套系统,说白了是围绕几个基本假设展开的:
- 多用户多任务。系统上同时有很多人在用,每个进程、每个文件都要有归属,所以权限管理不是附加功能,而是地基。
- 一切皆文件。普通文件是文件,目录是文件,磁盘设备是文件,终端是文件,socket也是文件。理解了这句话,看到/dev/sda、/proc/cpuinfo、/dev/null才有直觉。
- 命令短小、组合为王。Linux命令大多只做一件小事,真正强大的是管道、重定向、通配符这些“胶水”把小事串起来解决大问题。
- 配置和日志都是纯文本。所以文本处理的优先级极高,后面我会专门花一个章节来说grep、sed、awk。
这四条一旦装进脑子,你会发现很多题目其实是在同一套逻辑上换皮。比如问你怎么查看CPU信息,你想到“一切皆文件”,就会走到/proc/cpuinfo;问你怎么让一个脚本开机就执行,你想到配置是文本,就会去找/etc/rc.local或者systemd服务文件。
复习顺序应该是:先把这几条底层思维模型建立起来,再按“文件、权限、进程、网络、存储、脚本”六大板块逐个过命令。框架先行,命令随后,这样才记得牢。
1.2 命令不是背出来的,是查出来的
我知道热词榜上“Linux常用命令大全”点击量一直很高,但作为过来人,我得说句实在话:期末复习真不建议从头到尾刷命令大全。期末考试考的是“解决问题”,不是“默写”。
正确的打开方式是按场景分组。每个场景只抓高频命令:
| 场景 | 核心命令 |
|---|---|
| 文件与目录 | ls、cd、pwd、cp、mv、rm、find、ln |
| 权限管理 | chmod、chown、chgrp、umask |
| 进程管理 | ps、top、kill、jobs、bg、fg、nohup、systemctl |
| 网络管理 | ip、ss、ping、ssh、scp、curl、wget |
| 压缩打包 | tar、gzip、zip、unzip |
| 文本处理 | grep、sed、awk、sort、uniq、wc、cut |
每组不用贪多,把每个命令“用途+一个典型例子”写下来就够了。比如tar,你只要知道tar -zxvf file.tar.gz是解压,tar -zcvf file.tar.gz dir是打包压缩,考试基本够用。真正难到你的往往不是某个命令本身,而是“什么时候该用哪个命令”。
还有一个救命技能必须练:读帮助。机考通常允许man手册和--help,平时多练man ls、grep --help,考试遇到没见过的参数,至少在手册面前能有方向。最怕的是平时不查,考试时给了文档也找不到答案。我在模拟面试中发现,很多学生的差距真的就差在一个“会不会查手册”上。
2. 文件系统与权限:一多半基础分都藏在这里
2.1 目录结构记熟,送分题就稳了
Linux目录结构几乎每套期末卷都会出一两道题,特点是直来直去,但覆盖面很广。最常考的是下面这些:
| 路径 | 用途 | 容易考的细节 |
|---|---|---|
| /bin、/sbin | 系统基本命令和系统管理命令 | 现代发行版大多软链到/usr/bin |
| /etc | 系统配置文件 | DNS、用户、服务配置都在这 |
| /home | 普通用户家目录 | 用户登录后的默认工作目录 |
| /root | 管理员家目录 | 普通用户无权限进入 |
| /var | 变化的数据 | 日志一般在/var/log,缓存、邮件也在/var |
| /tmp | 临时文件目录 | 所有人可写,靠粘滞位保护 |
| /dev | 设备文件 | sda表示第一块SATA磁盘 |
| /proc | 内核和进程信息的虚拟文件系统 | /proc/cpuinfo、/proc/meminfo、/proc/uptime |
这里有个容易被忽略的考点:/tmp目录权限是drwxrwxrwt,最后那个t就是粘滞位(Sticky Bit)。它的作用是:所有人都可以在/tmp里创建文件,但只有文件所有者和root能删除别人的文件。很多权限综合题都拿/tmp当背景,因为它把粘滞位、文件所有权、目录写权限三个知识点打包在一起。
另外,现在不少发行版把/bin、/sbin改成指向/usr/bin的软链接,这种情况下考察“软链接是什么”就特别合适。因为/bin本身是一个软链接到/usr/bin的路径,题目问“删除原文件后软链接还能用吗”,答案自然就出来了。
2.2 权限位、umask和修改命令:同一个知识点,三种考法
权限题是Linux期末考试里出现频率最高的题型,没有之一。常见考法有三种,但底子就一个:ls -l输出里的第一列字段。
第一列总共10个字符,第1个是文件类型,-是普通文件,d是目录,l是软链接,b是块设备,c是字符设备。后面9个字符分成三组:所有者、属组、其他用户。每组三位,分别是r、w、x,对应读、写、执行。
八进制数字表示法是另一个必考点。把r、w、x看成二进制位:rwx = 7,rw- = 6,r-x = 5,r-- = 4。所以-rw-r--r--就是644,-rwxr-xr-x就是755。考题通常会反过来问:给你一个chmod 750,写出它的权限位表示,即rwxr-x---。
文件权限和目录权限的区别,是很多学生栽跟头的重灾区。对目录来说,r表示能列出目录内容,w表示能在目录里创建和删除文件,x表示能进入目录。特别注意:要删除某个文件,决定权在你对该文件所在目录是否有写权限,而不是你对这个文件本身是否有写权限。这个点几乎每年都有人丢分。
umask考点也要注意。它规定了新建文件或目录时默认去掉的权限位。常规计算方式:目录默认最大是777,文件默认最大是666,减去umask值得到默认权限。例如umask为022,默认目录权限是777-022=755,默认文件权限是666-022=644。考场上题目如果只给umask让你算结果,用这个简单减法基本能应付多数情况。
扩展一点,setuid、setgid和粘滞位也偶尔出现。setuid看点是/usr/bin/passwd的权限位-rwsr-xr-x,那个s表示执行passwd时会临时获得文件属主root的身份,所以普通用户才能修改/etc/shadow。理解了这个机制,很多“为什么普通用户能改自己密码”的选择题就能答对。
2.3 sudo和su:不只要会敲,还要说得出区别
sudo和su的区别几乎每场面试都会问,期末题也越来越喜欢从这里出简答题。
简单说,su是切换用户,从普通用户切到root需要输入root密码。sudo是“以某个用户身份执行单条命令”,默认以root权限执行,需要的是当前用户自己的密码,而且前提是该用户被加入了sudo授权名单。
配置sudo的文件是/etc/sudoers,建议永远用visudo编辑,因为它会在保存时做语法检查,防止配置文件写错导致sudo全部失效。给普通用户加sudo权限,常见的做法是:
usermod -aG wheel zhangsan或者直接编辑sudoers文件,加入如下一行:
zhangsan ALL=(ALL:ALL) ALL这段配置的意思是,zhangsan可以从任何终端登录,在任何主机上,以任何用户身份执行任何命令。理解每一段含义对于解答权限配置题很有帮助,建议背下来。
我可以提一个经验教训:别为了图省事直接用su - root处理所有问题。平时的操作尽量用sudo,因为sudo有日志审计,能追踪谁在什么时间执行过什么命令。考试如果问“为什么生产环境不建议直接用root操作”,可以从审计、权限最小化、误操作风险三个角度答,这也是很多企业面试的标准答案。
3. 进程、作业与系统监控:会看状态比会杀进程更重要
3.1 ps aux和top里到底在看什么
进程类题目,十有八九围绕ps、top、kill展开,但考的往往不是命令怎么写,而是输出结果怎么解读。
ps aux中,最关键的是STAT这一列。你可能遇到这些字母组合:S表示可中断睡眠,R表示正在运行或就绪,T表示停止,Z表示僵尸进程,D表示不可中断睡眠。那些小符号也别忽略:+表示前台进程,<表示高优先级,s表示会话领导者。
僵尸进程是个特别经典的考点:为什么kill -9杀不掉僵尸进程?因为僵尸进程本身已经死了,进程还在进程表里只是因为父进程没有调用wait来回收。你杀一个已经死掉的进程当然没效果。正确处置办法是找到它的父进程,让父进程结束或者重启父进程,这样僵尸进程就会由init进程收养并回收。这套逻辑要能完整复述出来,比单纯会敲几条kill命令有用得多。
看系统整体负载则用top。top第一行的load average有三个数字,分别表示过去1分钟、5分钟、15分钟的平均负载。注意它不是一个百分比,而是运行队列中处于运行或不可中断状态的平均进程数。单核CPU的机器,load值超过1就说明过载了;四核CPU则要到4才表示满载。题目如果给你一个八核服务器load average为4,问系统是否异常,正确答案是“还在正常范围附近”。
3.2 后台运行不简单:&、Ctrl+Z、nohup和systemd
关于后台运行,考试最常见的场景题是:终端关闭后,后台进程还能不能继续跑?
基础部分包括:
command &:让命令在后台运行,但关闭终端时进程会收到SIGHUP信号从而退出。Ctrl+Z:挂起当前前台进程,jobs查看作业,bg放到后台继续执行,fg调回前台。nohup command &:忽略HUP信号,即使终端关闭进程也能继续跑。输出默认写到nohup.out。setsid command:让进程脱离当前会话,也能避免终端关闭时被杀。
再往上的考点是systemd。很多新版本系统的服务管理已经不是传统的SysV init脚本,而是systemd unit。考试会问“怎么让服务开机自启”“怎么查看服务运行状态”,用到的命令是:
systemctl start nginx systemctl enable nginx systemctl status nginx systemctl restart nginx把传统命令和systemd命令对应起来是个很好的复习思路:启动服务是service,在systemd里就是systemctl start;设置开机启动是chkconfig,在systemd里就是systemctl enable。这样对照记忆,既把新旧两种体系串起来,也不怕考试用新系统出题。
3.3 系统负载和内存瓶颈的判断思路
命令会了还不够,考试喜欢让你“根据输出判断问题”。比如free -h输出里,available这一列才是真正可用的内存,因为cache和buffer在内存压力大的时候是可以回收的。如果看到free列很小就慌,那是常见误区。
再比如定位CPU占用高的进程,标准操作是先运行top,按P键按CPU排序;要看内存占用,按M键按内存排序。文字题里还有一条经典的排查链路:系统变慢,第一反应不是去看某一个进程,而是先看整体负载、内存、磁盘I/O、网络,缩小范围后再用ps或top定位到具体进程。这套排查思路期末考试喜欢考,面试也喜欢考。
4. 网络配置与DNS:实验课上卡住大多数人的环节
4.1 先搞清楚现在系统用哪套网络管理
网络配置是所有实验题里最容易卡壳的地方,尤其是DNS配置。很多同学配置了/etc/resolv.conf,重启网络后配置就丢了;或者改了IP地址,但网卡根本没up。解决办法是,每次排错都按顺序走,不要跳步骤。
第一步,看网卡当前状态和IP地址:
ip addr # 或者老命令 ifconfig第二步,看默认路由:
ip route show第三步,ping网关和公网IP,判断链路通不通:
ping -c 3 网关IP ping -c 3 223.5.5.5第四步,再检查DNS解析。
这里有个经验:如果ping公网IP通、ping域名不通,那是DNS问题;如果ping网关都不通,问题出在IP配置或网卡状态;如果网关通但公网IP不通,大概率是路由或上级网络问题。90%的网络实验题,都能用这个顺序拆解出来。
4.2 配置DNS的前后顺序:坑基本出在覆盖和优先级上
“linux中配置dns出现的问题”被反复搜索,说明这是大家共同的痛点。最常见的现象是:手动把nameserver写进/etc/resolv.conf,当时能用,重开机或者重启网络服务后又没了。
原因在于/etc/resolv.conf经常被NetworkManager、systemd-resolved、DHCP客户端这类网络管理工具接管。你直接改文件,等于跟系统争夺配置权,重启后必然被覆盖。
临时改法只是改resolv.conf:
echo "nameserver 223.5.5.5" >> /etc/resolv.conf永久生效的正确思路是找到这个网络接口的网络管理器。比如在NetworkManager环境里,可以用nmcli修改连接配置:
nmcli con mod "Wired connection 1" ipv4.dns "223.5.5.5 114.114.114.114" nmcli con up "Wired connection 1"在systemd-resolved环境里,可以用resolvectl查看和设置:
resolvectl status resolvectl dns 接口名 223.5.5.5判断一个系统用的是哪套管理工具,先看有没有NetworkManager服务,再看systemd-resolved是否启用。这在实验课上非常关键,因为每个发行版的默认状态不一样,直接套一个思路很容易翻车。
4.3 远程管理、scp和网络排查题的必会技能
SSH相关题目几乎是期末实验考试的保留项目。必会操作包括:启动sshd服务、配置开机自启、使用ssh登录、通过scp传文件、配置密钥免密登录。
密钥登录的配置是重点,步骤很短但坑多:
ssh-keygen -t rsa ssh-copy-id user@远程主机ssh-copy-id本质上是把本机公钥追加到远程主机的~/.ssh/authorized_keys文件里。很多同学手动配置时忘记设置权限,导致登录仍然要密码。关键点是:远端的~/.ssh目录权限最好是700,authorized_keys文件权限最好是600,权限太宽松SSH会直接拒绝信任密钥。
排查类题目中,查看端口监听情况常用两个命令:
ss -lntp lsof -i:80前者看端口监听和进程PID,后者可以按端口反查进程。问题“80端口被占用怎么办”,本质上就是先查谁占用了80,再决定kill还是一劳永逸地禁用那个服务。
网络这一章内容很杂,但只要按“网卡状态→路由→公网连通性→DNS→服务端口”这套顺序去组织,复习起来就不会东一榔头西一棒子。
5. Shell脚本与文本处理:大题从这出,别只会grep
5.1 引号、变量和特殊字符:脚本错误的一半来源
Shell脚本的大题,分值最高,但真正考得难的并不多。很多同学栽在基础语法上,尤其是引号和空格。
看这个例子:
name="Linux" echo "Hello $name" # 输出 Hello Linux,双引号里变量会展开 echo 'Hello $name' # 输出 Hello $name,单引号里原样输出 echo $(date) # 推荐写法,执行date命令 echo `date` # 等价于上面,但可读性差脚本里最容易犯的问题是if [ ]两边缺空格。中括号外面两边都必须有空格,变量最好加上双引号,否则值为空时会报错。
比较运算也要记清楚:整数比较用-eq、-ne、-gt、-lt,字符串比较用=、!=。文件测试用-f判断普通文件是否存在、-d判断目录是否存在、-x判断是否可执行。期末大题的脚本填空,基本就是这些点换着考。
5.2 grep、sed、awk组合出来的文本处理套路
文本处理三板斧,每个都要会,但更重要的是知道组合方式。
grep用来筛选行,核心是正则。比如找出/etc/passwd里以root或bin开头的行:
grep -E "^(root|bin):" /etc/passwdsed用来做替换和行编辑。把文件里的Windows换行符转成Linux格式的经典操作是:
sed -i 's/\r$//' file.txtawk用来做字段处理和统计。比如打印passwd文件第一列和第三列:
awk -F: '{print $1, $3}' /etc/passwd组合起来才是大招。统计日志文件里每个IP出现次数前十名:
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head这行命令把awk提取、sort排序、uniq计数、再次排序、head取前几条全部串起来。这种综合命令在考试里经常出现,因为一条管道命令能考出好几个知识点。
还有一类高频题是交互式找出某进程PID。需要grep过滤、再排除掉grep自身进程本身:
ps aux | grep nginx | grep -v grep这里grep -v grep是防止把正在执行的那条grep命令自己也匹配进去,这个细节在很多上机题里出现过,值得注意。
5.3 背一个能压中不少大题的脚本模板
Shell大题通常是让你写一个带循环、条件判断、变量、日期命名的脚本。与其零散背知识点,不如熟练一个模板。
比如这个备份脚本:
#!/bin/bash backup_dir="/backup" log_file="/var/log/backup.log" if [ ! -d "$backup_dir" ]; then mkdir -p "$backup_dir" fi for file in /etc/hosts /etc/passwd /etc/group; do cp "$file" "$backup_dir/$(basename $file).$(date +%F)" done echo "$(date '+%F %T') backup done" >> "$log_file"这个脚本里包含了变量定义、if条件判断、for循环、命令替换、日期命令、日志追加。平时把这个脚本自己从头敲一遍,遇到让写“备份某个目录下特定扩展名文件”之类的题目时,把循环部分替换成find加-exec,基本就能覆盖。
需要提醒的是,脚本第一行shebang要写,执行前记得加执行权限:
chmod +x script.sh ./script.sh6. 实验环境是期末最大的变量:虚拟机、解压和部署的坑
6.1 虚拟机安装Linux时的常见问题排查
虚拟机安装Linux几乎是期末必做的准备动作,但很多人会卡在安装过程。
一个常见问题是安装时提示虚拟化不可用或者开机蓝屏。这种情况要先检查BIOS/UEFI里的Intel VT-x或AMD-V是否开启,同时确认VMware或VirtualBox的“虚拟化引擎”相关选项没有关闭。很多所谓“虚拟机安装linux蓝屏”的问题,其实不是Linux的锅,而是底层虚拟化没开。
另一个坑是安装时选了“最小安装”或“服务器”模式,结果开机后没有图形界面。如果只想做期末实验,推荐安装带桌面环境的发行版,或者装完手动安装桌面。VMware虚拟机装Ubuntu Desktop,默认配置选2核CPU、2GB内存、20GB磁盘,基础实验基本够用。
网络模式也值得讲一下。NAT模式适合虚拟机访问外网,桥接模式适合让局域网其他机器直接访问虚拟机。考试里如果遇到“虚拟机ping不通外网”,先看NAT模式是否正常;如果遇到“宿主机访问不到虚拟机里的服务”,优先检查是不是桥接模式以及防火墙规则。
6.2 解压乱码和软件安装其实有规律可循
热词里“linux 解压文件乱码”上榜不是没有原因的。Windows下压缩的zip包,文件名编码通常是GBK,Linux默认UTF-8解码就会显示乱码。解决办法是解压时指定编码:
unzip -O CP936 file.zip如果发行版里的unzip不支持-O参数,可以安装7-Zip替代:
7z x file.zip7z对中文编码支持相对更好。处理已经解压出来的乱码文件,可以用convmv把文件名从GBK转成UTF-8。
另外,软件安装这块,期末考试通常考的是apt/yum/dnf三种包管理器的基本用法:
| 发行版家族 | 包管理器 | 安装命令示例 |
|---|---|---|
| Debian/Ubuntu | apt | apt install nginx |
| RHEL/CentOS/Rocky | yum/dnf | dnf install nginx |
| 通用源码 | 编译安装 | ./configure && make && make install |
6.3 Docker、iperf3这些热门工具怎么快速上手
期末实验如果涉及Docker,最常考的是三个动作:安装、拉镜像、跑容器。安装Docker最省事的方式是用官方安装脚本:
curl -fsSL https://get.docker.com | sh systemctl enable --now docker docker run hello-world要注意的是,国内服务器下载镜像慢是常见问题,配置镜像加速器之后再进行实验,能省掉大量等待时间。这个细节我个人的实际体验很重要,不然实验课上一节课全耗在等镜像拉取上。
网络测试工具iperf3的部署也常被提及。服务端执行:
iperf3 -s客户端执行:
iperf3 -c 服务端IP就能测出TCP带宽。如果服务端端口被防火墙挡了,记得放行默认的5201端口。这个工具不仅是实验内容,很多面试题也会拿“怎么测两台Linux机器之间的带宽”来考察候选人的网络基本功。
至于热词里那些偏底层的方向,比如linux内核动态加载file_operations拦截read/write、linux提权、透明加密,期末阶段不需要深入到源码层面。知道大致概念就够:Linux把设备操作抽象成file_operations结构体,驱动通过注册read、write等回调来完成设备读写;内核模块可以用insmod动态加载,卸载用rmmod。这块更多是后面就业、面试或做嵌入式开发方向才需要细究的内容,期末复习优先级放在最后。
7. 考前冲刺:这几类必考题的答题模板
7.1 场景排查题的“四步答题法”
期末考试最怕的是那种“某服务无法启动,请排查并解决”的大题。这类题看着开放,其实有很固定的答题套路,我总结为四步:
第一步,看服务状态。systemctl status 服务名,确定服务是没启动、启动失败还是正在运行但配置错误。
第二步,看日志。日志是定位问题的最直接证据。journalctl -xe、/var/log/下对应的日志文件,比如nginx的/var/log/nginx/error.log。很多让你“查看服务失败原因”的题,答案其实就藏在日志里。
第三步,看端口和相关进程。ss -lntp确认端口是否被其他进程占用,ps aux | grep 服务名确认进程是否在跑。
第四步,看权限和防火墙。常见坑是进程启动用户对配置文件没有读权限,或者SELinux拦了,或者防火墙没放行端口。
这个四步法在期末卷面上很占便宜。出题人看到你按这个逻辑一步步写,就会认为你真的理解整个排查思路,而不只是蒙中了答案。
7.2 高频概念辨析题:硬链接与软链接、kill -9、增删用户
软链接和硬链接区别是最高频的简答题之一。硬链接本质是同一个inode的多个目录项,所以不能跨文件系统,不能给目录创建硬链接;删掉源文件后,硬链接文件内容还在。软链接是独立文件,存的是目标路径,可以跨文件系统,也可以指向目录;删除源文件后,软链接变成失效链接。这个区分建议自己动手在虚拟机里做一遍,印象会非常深。
kill相关也有经典问法。kill -15是SIGTERM,给进程一个优雅结束的机会;kill -9是SIGKILL,强制立即杀死。为什么不要逢杀必用-9?因为进程来不及保存数据、清理临时文件,可能造成数据丢失或状态不一致。这个回答逻辑要背下来。
用户管理题也基本是按流程走。新增用户:
useradd zhangsan passwd zhangsan usermod -aG wheel zhangsan删除用户时注意-r参数会连同家目录一起删除,很多题目会问这个参数。
7.3 面试题对期末复习的反向提示
我接触过的很多Linux面试题,其实是期末综合题的升级版,反复出现的话题有:查看某个端口被哪个进程占用、找出CPU占用最高的进程、统计日志里某类错误出现的次数、修改文件属主和权限、配置静态IP和DNS。把这些场景自己在虚拟机里完整跑一遍,期末大题的把握会明显提高。
还有一类基础问法:查看系统版本和内核信息。cat /etc/os-release看发行版信息,uname -a看内核版本,uname -r只看内核版本号。这类题简单但容易忘,每次面试前我都会让人重新过一遍。
最后说一点我自己的复习习惯:考前我不再看完整笔记,而是开一台虚拟机,把“从零创建一个用户、配置sudo、设置静态IP和DNS、安装一个服务、写一个备份脚本”整个流程完整走一遍。这一步能做到,Linux期末的基础分和实验分基本就稳了。如果时间还有富余,就练一练grep、sed、awk组合分析的题目,这是提升上限的地方。复习Linux不怕慢,怕的是在错误的方向上反复磨,框架对了,剩下的就是熟练度的问题。