拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Linux期末复习精要:吃透核心考点,考试面试通关指南

Linux期末复习精要:吃透核心考点,考试面试通关指南

Linux期末复习总结:把这些点吃透,考试和面试都不慌

每年期末都有人拿着Linux教材从头翻到尾,合上书又觉得啥也没记住。说实话,Linux这门课如果只是死记硬背命令,考试一过基本就忘干净了。我当年复习Linux时踩过不少坑,后来做运维又把这套知识翻来覆去用,才真正摸清楚期末到底考什么、工作到底用什么。这篇总结不是把教材目录给你抄一遍,而是站在“学完一学期后该怎么高效梳理”的角度,把Linux的核心知识串成一个能拿分的体系。

这篇文章适合正在准备Linux期末考试的在校生,也适合刚入行想补基础知识的运维新手。里面有命令详解、原理分析、实操步骤和排查思路,你不需要一次读完,按章节对照自己的薄弱点去补就行。只要把下面这些内容真正消化掉,应付考试绰绰有余,顺带也能给后续的面试打底子。

1. 内容整体设计与思路拆解

1.1 期末复习为什么要先搭框架而不是背命令

我见过太多人复习Linux的方式,就是打开一个“Linux命令大全”从头开始背。今天背了ls、cd,明天背cp、mv,后天再看grep、awk,结果背到后面发现前面忘得差不多了。原因很简单——命令不是孤立存在的,它们都服务于某个具体场景,单靠死记硬背没有上下文,记忆自然不牢靠。

正确的复习方式应该是先建立整体框架。Linux学习无非围绕这几大块:系统架构(内核+Shell)、文件与目录管理、用户与权限、进程管理、网络配置、服务管理、Shell脚本编程。你把这几块在脑子里排好位置,每学一条命令就知道它属于哪个模块、解决什么问题,这样记忆是网状的而不是线性的。

拿用户与权限来举例。这条线串起来的知识包括:用户和组的概念、/etc/passwd和/etc/group文件格式、useradd/usermod/passwd命令、chmod/chown权限修改、umask默认权限、ACL扩展权限。如果你按着一个用户“从创建到授权”的流程去复习,整条线就特别顺——先建用户,给用户设密码,把用户加进组,再给用户分配文件和目录的权限,每一步都是上一步的自然延伸。

1.2 课程重点与考试高频点的判断方法

判断哪些知识点容易考,有一个笨但有效的办法:看这些知识点是否“一句话解释不清”。凡是需要两三句话甚至一小段才能讲明白的概念,基本都是重点。比如硬链接和软链接的区别、进程和线程的区别、Linux一切皆文件的设计理念、动态库和静态库的差异——这类问题既能考选择题也能考简答题,是老师最喜欢出的。

另一个判断维度是“实操中是否经常踩坑”。比如新手最容易搞混的绝对路径和相对路径、sudo和su的区别、管道和重定向的区别,这些知识点在实验课上反复出错,老师自然知道学生哪里薄弱,期末就会重点考哪里。复习的时候优先级应该是:实验课做错过的问题 > 概念性对比题 > 纯记忆性内容。

1.3 这篇复习总结的使用方法

我不是让你从头读到尾然后就算复习完了。我的建议是:第一遍快速通读全文,标记出自己生疏的章节;第二遍针对薄弱章节动手敲命令实际验证;第三遍对照文末的实战演练自测。Linux考的不是“会不会背”,而是“给一个场景能不能想到用哪条命令、能不能说出原理”。

后文每一章的结构都是“概念解释+命令详解+易错点提醒”,复习的时候可以对照自己的教材查漏补缺。如果你能把每个章节末尾的“易错点”都搞清楚,期末试卷上那些专门挖坑的选项基本骗不到你。

2. 核心细节解析与实操要点:命令、权限与文件系统的底层逻辑

2.1 文件管理命令背后藏着的知识点

很多人觉得文件管理就是ls、cd、cp、mv,没什么好复习的。但考试不会直接问你“cp命令怎么用”,它会结合文件类型、链接、通配符、目录结构一起考。

Linux文件类型是必考点。用ls -l查看文件时,第一列第一个字符表示文件类型:-表示普通文件、d表示目录、l表示符号链接、b表示块设备、c表示字符设备、p表示管道文件、s表示套接字文件。光记这些字母不够,你得知道怎么创建这些特殊文件——mkfifo创建管道文件、ln -s创建符号链接、mknod创建设备文件。考选择题时经常给一个ls -l的输出结果,让你判断文件类型,这就是送分题。

硬链接与软链接的区别是期末高频简答题。硬链接是同一个inode的多个名字,删除一个链接不影响其他链接访问数据,但不能跨文件系统创建,也不能对目录创建硬链接。软链接是一个独立的文件,里面存的是目标文件的路径,目标删了软链接就变成“死链”,但可以跨文件系统、可以对目录创建。记住口诀:“硬链接是文件的别名,软链接是文件的快捷方式”。考试时如果问“修改通过硬链接或软链接访问的文件内容,原文件会变吗”,答案是都会变,因为硬链接指向同一份数据,软链接通过路径访问的也是同一份数据。

通配符也是复习盲区。匹配任意多个字符,?匹配单个字符,[abc]匹配方括号内任一字符,[!abc]匹配不在括号内的字符。注意通配符和正则表达式的区别:通配符是Shell解析的,用于文件名匹配;正则是文本处理工具(grep、sed、awk)解析的,用于字符串匹配。期末有时候会故意把.txt和正则里的.*.txt混在一起考,你心里得有这根弦。

目录树结构的标准也得记牢。/bin和/usr/bin存放命令,/etc存放配置文件,/home存放普通用户家目录,/root是管理员家目录,/tmp存放临时文件,/var存放日志和缓存,/dev存放设备文件,/proc是内存中的虚拟文件系统。选择题经常会问“日志文件默认放在哪个目录”、“用户家目录一般在哪里”,这些都是基础分。

2.2 权限管理的三元组与特殊权限

文件管理还有一个重头戏就是权限。Linux权限的基本模型是“用户分为三类:属主(u)、属组(g)、其他人(o),权限分为三种:读(r=4)、写(w=2)、执行(x=1)”。为什么r用4、w用2、x用1表示?因为它们是2的幂次,可以组合出0到7的任意值,r+w+x=7、r+w=6、r+x=5,等等。这比用字母做权限运算方便得多,chmod 754就是属主7(rwx)、属组5(r-x)、其他人4(r--)。

期末考试喜欢考的三个特殊权限位分别是:SUID(s)、SGID(s)、SBIT(t)。SUID作用在可执行文件上,当用户执行该文件时,进程以文件属主的身份运行。最典型的例子是passwd命令,普通用户能通过它修改/etc/shadow密码文件,靠的就是SUID位。SGID作用在目录上时,在该目录下新建的文件会自动继承目录的属组。SBIT粘滞位作用在/tmp这类共享目录上,只有文件属主才能删除自己的文件,其他人即使有写权限也删不了别人的文件。

这些特殊权限在chmod命令中用数字表示是在权限位前加第四位数字,比如chmod 4755给文件加SUID、chmod 2770加SGID、chmod 1777加SBIT。复习时容易搞混的是“对文件生效”还是“对目录生效”,SUID只对文件有意义,SGID和SBIT主要对目录有意义,这个点经常拿来出判断题。

ACL权限也是近几年的热门考点。传统权限只能设置一个属主、一个属组和其他人,如果想让某个特定用户对文件有特定权限,传统方式搞不定。ACL(Access Control List)用setfacl命令给指定用户或组设置单独权限:setfacl -m u:zhangsan:rw /data表示给zhangsan对/data的读写权限。用getfacl查看ACL设置。ACL权限位在ls -l的输出里用+号标记。这个知识点理解起来不难,但很多人复习时容易忽略。

2.3 文件系统的挂载、磁盘管理与inode

文件系统这块,期末重点在挂载概念和inode的理解。挂载就是把一个设备(分区、U盘、光盘)关联到目录树上的某个目录,之后访问该目录就相当于访问设备上的文件系统。mount /dev/sdb1 /mnt/data就完成了挂载,umount取消挂载。如果提示“device is busy”,说明有进程正在使用该挂载点,可以用fuser -km /mnt/data强制结束占用进程。

/etc/fstab文件是开机自动挂载的配置文件,格式是“设备 挂载点 文件系统类型 挂载选项 dump备份标记 fsck检查顺序”。考试会给你一行fstab让你解释每个字段的含义,也会问为什么修改fstab出错会导致系统无法启动——因为系统启动时会按fstab逐行挂载,格式错误或挂载点不存在都可能启动失败。

inode是Linux文件系统里绕不开的概念。inode保存的是文件的元数据(权限、属主、大小、时间戳、数据块指针),但不包含文件名。文件名存在目录项里,目录项指向inode,inode指向数据块。用ls -i查看文件的inode号,用stat查看inode详细信息。出现“No space left on device”但df -h显示磁盘还有空间时,八成是inode耗尽了,用df -i确认。这个问题在真实运维里很常见,期末如果出场景题,考的就是你对inode的理解。

磁盘分区部分记住fdisk(MBR分区、单盘2TB以下)和parted(GPT分区、单盘2TB以上)就够了,会用lsblk查看块设备信息、mkfs.ext4 /dev/sdb1格式化分区。知道fdisk对分区表类型的限制,选择题就能拿分。

3. 用户、进程与服务的实操层:从命令到场景的进阶

3.1 用户和组的管理:一条线串起所有细节

前面说过用户和组可以按流程来复习。具体命令是:useradd创建用户、passwd设置密码、usermod修改用户属性、userdel删除用户;groupadd创建组、groupmod修改组、groupdel删除组;id查看用户身份信息、su切换用户(需要目标用户密码)、sudo以管理员权限执行命令(需要自己密码,且在sudoers中有授权)。

复习时要搞清楚一个重要区别:su和sudo。su - root直接切换为root用户,环境变量也切换到root的;su root切换后仍保留当前用户的某些环境变量。sudo是“用root身份执行这条命令”,执行完还是当前用户。sudo的配置文件是/etc/sudoers,系统建议用visudo命令修改,因为visudo会做语法检查,避免改错导致sudo无法使用。

账户相关文件强调一下。/etc/passwd每个字段的含义:用户名:密码占位符:UID:GID:描述信息:家目录:登录Shell。注意密码加密后的内容在/etc/shadow里,普通用户对passwd文件只有读权限,对shadow没有任何权限。UID的约定是0给root,1-999给系统用户,1000+给普通用户。

实际操作中创建用户时,useradd默认会同时创建同名组和家目录。如果不想创建家目录,加-M参数;指定家目录用-d参数;指定UID用-u参数;指定附加组用-G参数,注意-G和-g的区别——-g是主组,-G是附加组。一个用户只能有一个主组,可以有多个附加组,登录后默认属于主组。这些参数考选择题特别容易混淆,动手建一次用户就记住了。

3.2 进程管理:前台、后台与系统负载的理解

进程管理在期末的考法通常有两种:一种是命令记忆题,问查看进程用什么、结束进程用什么;另一种是概念理解题,问僵尸进程是怎么产生的、孤儿进程谁来收养。

查看进程的命令:ps -ef完整显示所有进程,ps aux也是查看全部进程(a显示所有用户,u显示详细信息,x包括没有终端控制的进程),输出里PID是进程号,PPID是父进程号,%CPU和%MEM是资源占用百分比。top动态查看进程,按P按CPU排序、按M按内存排序、q退出。pgrep按名称查找进程号,pstree以树状显示进程父子关系。ss -tlnp查看端口对应的进程,替代了netstat。

结束进程的命令:kill默认发送TERM信号请求正常退出,kill -9发送KILL信号强制杀死,kill -l列出所有信号。pkill按进程名结束,pkill -u用户名结束该用户的所有进程。有时候kill杀不掉进程,可以查一下进程是否处于D状态(不可中断睡眠,一般是等待IO),这种进程很难杀掉,可能得重启系统解决。

僵尸进程是很多同学想不明白的概念。简单说,子进程结束了,但父进程没有调用wait()回收它的退出状态,子进程的进程描述符还残留在内核里,这就是僵尸进程。它不占CPU也不占内存,但内核的进程表条目会一直被占用,积累多了会导致无法创建新进程。处理办法是找到它的父进程,kill掉父进程,孤儿进程会被init(PID 1)收养并自动回收。如果是systemd管理的服务产生了僵尸子进程,重启对应服务通常就能清理掉。

孤儿进程反过来,父进程先挂了,子进程被PID 1收养,变成后台运行,这类进程本身没有危害。期末考试如果问“孤儿进程和僵尸进程的区别”,你就答:孤儿进程还在运行、只是没有了原父进程;僵尸进程已经死了、但残留着进程表条目。

前台后台切换也是实操必考:命令后加&放入后台运行,Ctrl+Z挂起当前程序,jobs -l查看后台任务,bg让挂起的任务在后台继续运行,fg把后台任务调回前台。nohup命令用于让进程在退出终端后继续运行,标准格式是nohup 命令 &,输出重定向到文件时可加:nohup 命令 > output.log 2>&1 &。注意2>&1的含义,标准错误重定向到标准输出的位置,这是面试题里常考的一个细节。

3.3 systemd与服务的开机自启

现在主流的Linux发行版都用systemd来管理服务,替代了老的SysV init脚本。复习systemd只需要抓住一套核心命令:systemctl start|stop|restart|status|enable|disable 服务名。start立即启动,stop立即停止,restart重启,status查看运行状态,enable设置开机自启,disable取消开机自启。还有systemctl list-units --type=service查看所有服务状态,systemctl is-enabled 服务名查看是否开机自启。

服务配置文件存放在/usr/lib/systemd/system/(软件包自带的)和/etc/systemd/system/(管理员自定义或覆盖的)。配置文件有[Unit]段描述依赖关系、[Service]段定义启动命令和运行用户、[Install]段定义开机自启的target。手动创建服务文件后要执行systemctl daemon-reload重载配置,再systemctl enable让它在开机时被拉起。改完服务文件不daemon-reload直接restart,systemd用的还是旧配置——这个坑在真实环境里天天有人踩。

systemd还有几个概念如果课件里提到了也要认识:target相当于运行级别,multi-user.target相当于字符界面多用户模式,graphical.target相当于图形界面模式;journalctl是统一的日志查看工具,journalctl -u 服务名查看指定服务日志,journalctl -f实时滚动查看,journalctl --since "1 hour ago"查看最近一小时。日志在排查服务启动失败时是救命工具。

3.4 网络配置与常见排查思路

网络部分是Linux运维的基础,期末常考的包括查看IP、临时配置IP、DNS解析、连通性测试。

查看网络信息的命令:ip addr查看IP地址(简写ip a),ip route查看路由表(简写ip r),ss -tulnp查看监听端口,hostname查看主机名。老命令ifconfig和route在现在的系统中可能没装,考试如果写了ifconfig但不给环境,你知道概念就行,实操优先用ip命令。

临时配置IP可以直接用ip addr add 192.168.1.100/24 dev ens33,配完ip route add default via 192.168.1.1添加默认网关。永久配置因发行版而异:CentOS/RHEL系在/etc/sysconfig/network-scripts/ifcfg-ens33里修改,设置BOOTPROTO=static、IPADDR、NETMASK、GATEWAY、DNS1;Ubuntu系在/etc/netplan/目录下的yaml里配置,改完netplan apply生效。这个知识点不用死记路径,理解“临时配置重启失效、永久配置写入配置文件”就够了。

测试网络连通性:ping -c 4 IP地址测连通,curl -I URL测HTTP服务,nslookup或dig域名解析排查DNS问题,traceroute路由追踪。排查网络不通的思路是自底向上:先ping 127.0.0.1看本机协议栈是否正常,再ping本机IP看网卡和IP配置,再ping网关看二层三层是否通,再ping外网IP看路由和NAT,最后ping域名看DNS解析是否正常。这个排查流程写进简答题能拿满分,实操中也是这个顺序。

关于热词里提到的“linux中配置dns出现的问题”,常见的主流问题有两个:一是/etc/resolv.conf被NetworkManager覆盖,你手动改了IP和DNS,网卡一重启DNS就还原,解决办法是在网卡配置文件里设DNS1并确保PEERDNS=no;二是systemd-resolved进程监听53端口,但你自己的dnsmasq或named也想监听53,端口冲突导致解析异常,排查时用systemctl status systemd-resolved和ss -tlnp | grep 53看谁在占用。理解了这两个坑,考试场景题基本能对上。

3.5 软件包管理:yum/dnf与apt的对照表

软件安装方式一般就三种:包管理器、源码编译、容器镜像。期末重点在前两种的基础概念。

老牌RedHat系用yum(8+用dnf,命令基本兼容),Ubuntu系用apt。两者都解决依赖关系问题:你安装一个软件包,它会自动把依赖的库和包一起装上。核心命令做张对照表记:

操作RHEL系(yum/dnf)Debian系(apt)
更新仓库缓存yum makecacheapt update
安装软件yum install 包名apt install 包名
卸载软件yum remove 包名apt remove 包名
搜索软件yum search 关键词apt search 关键词
查看已安装rpm -qa / yum list installeddpkg -l
查看包信息rpm -qi 包名dpkg -s 包名

源码编译安装的套路是固定的:configure(检查环境生成Makefile)、make(编译)、make install(安装)。configure阶段可以用--prefix指定安装路径,--with/--without勾选功能模块。源码安装的好处是灵活可控,坏处是依赖手动解决,一旦缺库就得自己找。期末可能会考三个阶段的作用,你就答“生成Makefile、编译源码、拷贝到系统目录”。

4. Shell脚本与文本处理:最容易被忽略的“拉分项”

4.1 文本三剑客的难点拆解

grep、sed、awk这三件套是Linux的精髓,期末几乎必考,也是面试必问。很多人觉得它们难,是因为没搞懂各自的分工:grep负责筛选行,sed负责按模式编辑流,awk负责按列做文本处理。

grep基本用法是grep 模式 文件,常用选项:-i忽略大小写、-v取反、-n显示行号、-r递归搜索目录、-E使用扩展正则。注意egrep等同于grep -E,fgrep等同于grep -F固定字符串。输出匹配行、统计匹配行数用grep -c、只输出匹配的部分用grep -o(这个在提取IP、提取时间戳场景很好用)。正则表达式方面,基础正则的*和扩展正则的+的区别是常见考点:*表示前一字符重复任意次(含0次),+表示前一字符重复至少1次。

sed命令格式是sed -n '3p' 文件(打印第3行)、sed 's/旧/新/g' 文件(替换所有匹配)、sed -i直接修改文件、sed '/关键词/d'删除匹配行、sed -n '5,10p'打印5到10行。理解sed的工作原理是“按行读取-模式匹配-执行命令-输出”,默认会对每一行执行一遍脚本里的命令。sed -i这个概念务必记住:不加-i只是把处理后的内容输出到屏幕,不会改原文件;加上-i才是直接改文件,生产环境里用sed -i做批量替换前一定先备份或者先不带-i试跑一遍。

awk默认按空格或Tab把每行分成多列,$1是第一列,$2是第二列,$NF是最后一列,NF是列数,NR是当前行号。一个经典的入门命令是awk '{print $1, $NF}' 文件(打印第一列和最后一列)。awk还支持BEGIN块(在读取文件前执行)和END块(在读完文件后执行),以及条件匹配:awk '$3 > 100 {print $1}'。处理日志文件时候用awk提取指定列、按条件过滤、做累加统计,比手工翻日志高效得多。awk的-F参数可以指定分隔符:awk -F: '{print $1}' /etc/passwd就是按冒号切割,提取用户名列表,这个命令我几乎每周都会用到。

4.2 Shell脚本的语法基础与变量细节

Shell脚本入门并不难,期末通常要求能看懂脚本、能补全脚本、能说出脚本执行过程。核心语法包括:变量赋值(name=value,等号两边不能有空格,这点特别容易写错)、变量引用($name或${name},后者在变量名后面紧跟其他字符时必须用)、特殊变量($0脚本名、$#参数个数、$@所有参数、$?上一条命令的退出码)、条件判断(if、elif、else加fi)、循环(for、while加done)、函数定义(function 名称() { ... })。

条件判断里的测试语句是重灾区。文件测试:-f是不是普通文件、-d是不是目录、-e存不存在、-r/-w/-x有没有读写执行权限。数值比较用双括号:-eq相等、-ne不等、-gt大于、-lt小于。字符串比较用单方括号:=判断相等、!=判断不等、-z判断是否为空串。字符串比较和文件测试都用方括号的话,注意方括号两边必须有空格,[ "$name" = "root" ],缺了空格报错找到不命令。

for循环的几种写法要会看:for i in 1 2 3; do echo $i; done遍历列表,for ((i=0; i<10; i++)) C语言风格循环,for file in *.txt遍历当前目录所有txt文件。while循环常用于逐行处理文件:while read line; do echo $line; done < 文件名。这些能看懂、能写简单的,期末就没问题。

脚本执行权限也是爱考的点:直接执行./script.sh需要脚本有x权限;用bash script.sh执行则不需要。开机自动执行脚本的常见方式:写进/etc/rc.local(需要该文件有执行权限)或创建systemd服务,后者更规范。

4.3 vim文本编辑器的核心操作

vim在期末实验考试中经常出现,但分值占比不高。你需要掌握的是:vim的三种模式(普通模式、插入模式、命令行模式)以及相互切换,i插入、esc回普通模式、:wq保存退出、:q!不保存强制退出、dd删除当前行、yy复制当前行、p粘贴、/关键词搜索、:set nu显示行号。这些够了。再深入一点可能会考:nohl取消搜索高亮,:%s/旧/新/g全局替换。

vim里如果文件只读或没权限,保存时会报错,可以用:wq!强行保存,但前提是确实有权限修改。遇到E45: 'readonly' option is set(加!强制执行)这个提示,多半是文件属性只读或当前用户权限不够,别硬折腾,检查权限才是正解。

5. 实操过程与核心场景实现:跟着走一遍,胜过背十遍

5.1 从零搭建一个完整的实验环境

我强烈建议在虚拟机里实际操作一遍,光看文章复习效果会打折。用VirtualBox或VMware都行,镜像选CentOS 7.9或Ubuntu 20.04 LTS均可,安装时选最小化安装以节省资源。

虚拟机的网络模式建议选NAT或桥接。NAT模式下虚拟机通过宿主机的网络访问外网,IP由虚拟网卡分配;桥接模式下虚拟机直接占用局域网IP,跟宿主机在同一网段。实验阶段NAT就够用,涉及局域网互通时再切桥接。安装完成后先做几件事:配置静态IP(避免每次重启IP变化)、关闭防火墙或放行对应端口(systemctl stop firewalld)、配置yum源或apt源、用ping确认能上网。

很多同学装完虚拟机第一个遇到的问题就是热词里提到的“linux打开终端”——在图形界面上右键选Open Terminal即可;如果是纯命令行界面,直接就是终端,不需要额外操作。还有“虚拟机安装linux蓝屏”的情况,大概率是BIOS里没开启CPU虚拟化(VT-x/AMD-V),重启进BIOS打开虚拟化功能,或者换用更稳定的系统镜像(官方镜像优先,不要用不明来源的ghost镜像)。

5.2 一条命令看懂系统状态:综合排查演练

我给你一条综合命令,可以用来快速了解一台主机的状态,期末面试都能用上:

hostnamectl | head -1 # 查看系统版本和主机名 uptime # 查看负载和运行时长 df -h # 查看磁盘空间 free -h # 查看内存使用 ss -tlnp # 查看监听端口 ps aux --sort=-%cpu | head -5 # 查看CPU占用最高的5个进程

真正动手敲一遍,你会发现这些输出之间是有联系的:磁盘快满了可能导致日志写入失败,内存不足可能导致OOM杀进程,端口被占用可能导致服务起不来。能把现象和原因关联起来,Linux才算是入了门。真题里给一段top输出让你分析系统有哪些问题,本质上考的就是这种关联分析能力。

5.3 排查服务启动失败的完整流程

在实验中故意制造故障再排查,是提升最快的方式。比如写一个错误的systemd服务文件,然后执行systemctl start测试,你会发现服务起不来。这时候的排查顺序是:

systemctl status myservice # 查看服务状态和最近日志 journalctl -u myservice -n 50 # 查看服务最近50行日志 systemctl cat myservice # 查看服务配置内容(确认路径和命令没错) ls -l /usr/local/bin/myscript # 确认可执行文件存在且有执行权限

整个过程的核心思路是“从状态看线索、从日志找原因、从配置查问题”。状态里会给出失败原因或跳转到的日志位置,日志里会写出具体报错(脚本不存在、权限不够、端口被占),最后回到配置文件确认命令路径、运行用户、工作目录这些细节。这个排查思路不只适用于systemd,几乎所有服务问题都能按这个路径拆解。

排查完顺手记录一下排查过程,这种记录期末复习价值极高——老师出的场景题经常就是把真实故障改头换面变成简答题,你踩过一遍坑,比看十遍理论都有用。

5.4 综合实战脚本:批量创建用户并设置权限

这个脚本覆盖了用户管理、循环、条件判断、权限设置多个考点,建议亲手敲一遍:

#!/bin/bash # 批量创建用户,并给指定用户添加sudo权限 for user in zhangsan lisi wangwu; do if id "$user" &>/dev/null; then echo "用户 $user 已存在,跳过" else useradd "$user" echo "123456" | passwd --stdin "$user" # 初始化密码 echo "用户 $user 创建成功" fi done # 将zhangsan加入wheel组(CentOS中wheel组默认有sudo权限) usermod -aG wheel zhangsan echo "zhangsan 已加入wheel组" # 创建共享目录,并设置SGID,使新文件自动继承组 mkdir -p /data/share chown :zhangsan /data/share chmod 2775 /data/share echo "共享目录设置完成"

脚本里的几个关键点:id命令判断用户是否存在,&>/dev/null把标准输出和错误都丢弃掉;passwd --stdin从标准输入读密码,适用于脚本(注意Ubuntu上需要额外配置才支持这个参数,或者改用chpasswd);usermod -aG的-a参数必须加,不加会覆盖用户原有的附加组;chmod 2775中的2表示SGID,加上它后新文件自动归zhangsan组,这个细节本身就是一个高频面试题。

脚本写完后用bash useradd_demo.sh执行,再用id zhangsan、ls -ld /data/share、ls -l /data/share这几个命令逐一验证结果。

6. 常见问题与排查技巧实录:期末和面试里最容易翻车的地方

6.1 高频易错点速查表:每一行都值得记下来

下面这些内容是我从历届学生踩坑和真实运维场景里总结出来的高频易错点。考前过一遍,能救不少分:

易错点错误理解正确理解
su和sudo都是切换到rootsu切换用户,sudo只是以root身份执行命令
/和root目录同一个东西/是文件系统根目录,/root是root用户的家目录
chown和chmod作用一样chown改属主属组,chmod改权限
相对路径和绝对路径都差不多以/开头的是绝对路径,否则是相对路径
软链接和硬链接都是快捷方式硬链接共享inode,软链接存的是路径
grep和find都能搜索文件grep搜文件内容,find按文件名/属性找文件
管道和重定向都是数据流转管道连接命令,重定向对接文件
单引号和双引号都一样单引号内变量不展开,双引号内变量会展开
防火墙firewalld和iptables互不相关firewalld底层还是用iptables规则,只是管理方式更友好
前台进程和后台进程是否显示窗口有终端控制的是前台,脱离终端的是后台

这张表里其实每条都能展开成一个面试点。比如“单引号和双引号的区别”,你不仅要会理论,最好能直接说:echo "$USER"输出用户名,echo '$USER'输出$USER。动手验证一次,比背十遍记得牢。

6.2 解压乱码与编码问题:一个很实用的小场景

热词里有“linux 解压文件乱码”,这个在Windows和Linux之间传文件很常见。Windows上压缩的zip文件到Linux下解压后文件名乱码,本质原因是编码不一致:Windows用GBK给文件名编码,Linux按UTF-8解码,就乱了。

解决方案很多,最简单的是用unzip配合指定编码参数:unzip -O GBK file.zip(不同版本的unzip参数可能不同,有的用-o,有的用-0)。如果unzip不支持-O参数,可以先用Python的zipfile模块处理,或者安装unar工具(unarchiver)来自动识别编码。通用的原则是,先确认压缩包是在什么系统下产生的,再选择对应的编码参数去解压。

防止浪费时间的土办法是:压缩前在Windows里把文件名统一改成英文或拼音,或者打包的时候优先用tar.gz格式(Linux原生工具创建的tar包打包时能保留正确的UTF-8编码),这样到Linux下基本不会乱码。桌面端图形界面工具如Ark(KDE)、File Roller(GNOME)对编码的兼容性相对好一些,也可以试试。

6.3 权限不足时的常见报错排查

“Permission denied”是Linux新手遇到最多的报错。排查思路就三步:先看当前用户是谁(whoami),再看文件属主属组是谁(ls -l),最后看当前用户是否在文件的权限范围内。这里有个常见的误判:以为root能干所有事,其实root也会被某些限制挡住,比如SELinux——CentOS系统上的SSH公钥没生效,很多时候不是权限问题,而是~/.ssh目录或authorized_keys文件的SELinux上下文不对,用restorecon -Rv ~/.ssh修复即可。

如果遇到“sudo: 命令找不到”,可能是因为普通用户的环境变量PATH不包含/sbin目录,或者对方的sudo配置里secure_path限制了可执行路径。这种情况可以先把命令的绝对路径写全(比如/usr/sbin/ss -tlnp),再去检查sudoers配置。

“bash: 命令未找到”则不同,那个多半是命令确实没安装(最小化安装缺少很多命令),用yum provides或apt-file search去查这个命令属于哪个包,装上即可。把“命令不存在”“没有权限”“配置不对”这三类问题分清,排查报错就快多了。

6.4 从期末到面试:Linux复习如何延伸

期末复习完如果还想更进一步,建议把注意力放到热词里出现的“linux面试题”上。面试问的Linux问题,其实和期末考的并不完全脱节,主要差异在于面试更注重场景。比如“系统负载很高怎么排查”,考察的是top、ps、iostat、vmstat这些命令的综合运用;再比如“服务器上某个进程CPU一直100%怎么定位”,考察的是ps -L、strace、gdb的操作思路;“磁盘满了怎么办”考察的是df、du、lsof +L1找大文件、删日志的思路。本质上还是把命令用到场景里。

“linux提权”这个热词如果是出现在信息安全方向的课程里,它说的是通过漏洞或配置错误,从普通用户拿到root权限,比如利用sudo配置不当、SUID文件设置错误、内核漏洞等。这个内容在期末课程中不一定考,但如果你对安全方向感兴趣,建议去了解一下为什么会存在这些风险,以及如何通过合理的权限设计去规避。

如果精力有余,可以试试“kali linux 学习笔记”这类方向,kali里很多工具的底层都依赖Linux的网络配置、服务管理、权限体系,你把基础打牢了,学那些工具会快很多。

7. 最后的实战自测:拿这套题验证你的复习效果

复习完了一定要自测,我出几道覆盖核心考点的题目,你先自己写答案再对照后面的要点:

  1. 简述硬链接和软链接的区别,并说明ln命令如何创建软链接。
  2. 写出查看IP地址、查看磁盘空间、查看内存使用情况、查看进程列表的常用命令。
  3. 如何将一个用户加入sudo组?简述visudo的作用。
  4. 简述僵尸进程是如何产生的,如何清理僵尸进程。
  5. 编写一个Shell脚本,循环读取文件中的用户名列表,逐个创建用户并设置密码。
  6. 排查“服务启动失败”问题时,你会按怎样的顺序执行哪些命令?
  7. 使用一条命令查出系统中监听8080端口的进程PID。

参考答案的要点我都写在前面章节里了,你如果能不看上文直接写出这些题的完整答案,说明复习得基本到位;如果某些题卡住了,就回头把对应章节再读一遍。考试时遇到类似题,思路清晰比死记硬背重要得多,先把原理讲明白,再写命令和参数,这一套组合拳下来分数不会低。

最后再说说我自己复习Linux的体会。当年我复习时,最吃亏的就是只看不练,以为把命令背下来就能得高分,结果实验考试一上手就露馅。后来我换了个策略:每学一个章节就立刻开一个虚拟机验证,哪怕是最简单的ls和cd,也要动手敲一遍并思考它的输出意味着什么。慢慢地,那些命令就不再是一个个孤立的名字,而是我手里的工具。期末考的不只是命令本身,更是你“是否真的会操作这套系统”的证明——你亲手敲过的命令,考试时一定会从记忆深处跳出来帮你。

返回列表