
你被问过这几个问题吗ps aux和top到底该看哪个chmod 777为什么会被面试官皱眉头df显示磁盘满了但du找不到大文件问题出在哪这些年我面过不少候选人也被别人面过。Linux面试题看起来满天飞其实翻来覆去就是那几块文件目录、权限用户、进程系统、网络、Shell脚本再加一两道综合排障。今天我把高频考点压缩成45个经典Linux面试题每个题都给了参考答案和面试官的追问点。零基础不用慌按顺序一遍啃下来基本够应对初级运维、后台开发、测试开发这些岗位的Linux基础考察。1. 45道题的知识地图先用一张表看清考点分布1.1 面试官想通过Linux题考察什么很多候选人以为面试就是考“会不会背命令”。实际上面试官问Linux题真正想确认三件事你真的在Linux环境下干过活还是只看了教程遇到问题有没有排查思路还是只会百度对底层原理有没有基本认知比如权限、进程、文件系统这些概念能不能讲清楚。所以你会发现同样是问“查看文件”他可能会接着问“日志文件很大怎么只看最后100行并且实时刷新”。这就是在考你的实际场景能力。下面的45道题就是为了帮你把这些场景覆盖全。1.2 这45道题的分布与使用建议我把题目分成6个知识块外加4道综合题。先看一眼分布知识块题目范围考察重点文件与目录第1-10题路径、链接、查找、压缩、磁盘权限、用户与安全第11-18题权限位、SUID/SGID、sudo、ACL进程、系统与服务第19-27题进程信号、systemd、定时任务、性能定位网络与SSH第28-34题IP、端口、DNS、防火墙、远程同步Shell脚本与文本处理第35-41题变量、重定向、管道、grep/sed/awk综合排障与概念第42-45题系统变慢、CPU飙升、安全加固我的建议是第一遍按顺序过不会的标记下来第二遍只看标记的题尝试自己先回答再对照答案第三遍把每道题的“追问点”当作新题目来练。这样三轮下来比单纯背答案效果好得多。1.3 零基础到精通的刷题节奏如果你是零基础不要试图一天刷完45题。每天只攻一个知识块白天练命令晚上回忆思路周末把这一块的题全部口述一遍。每道题不要只记命令要理解它解决什么问题。比如du和df的区别不是“一个查目录一个查分区”而是它们统计的粒度完全不同——一个是文件角度一个是文件系统块设备角度。理解到这个层面哪怕题目换个问法你也能回答。2. 文件与目录从路径查找到压缩打包的10道高频题2.1 路径、链接与文件类型必须拿下的地基题第1题绝对路径和相对路径有什么区别如何获取当前工作目录绝对路径从根目录/开始写任何时候都能唯一定位一个文件比如/etc/nginx/nginx.conf。相对路径是相对于当前工作目录的路径比如../logs/access.log。获取当前目录用pwd。追问点经常在于/home/user/../other这个路径最终指向哪里。这里要清楚..表示上一级目录所以/home/user/../other等同于/home/other。另外shell会保留路径中的..不会自动简化但内核解析时会按目录结构跳转。第2题创建、切换、删除目录涉及哪些命令mkdir -p的作用是什么cd切换目录mkdir创建目录rmdir删除空目录。如果要创建多级目录比如/a/b/c直接mkdir /a/b/c会报“没有那个文件或目录”必须加-pmkdir -p /a/b/c。删除非空目录用rm -rf但这是个危险操作面试官会追问你是否知道rm -rf /会怎样——千万别在生产环境试。很多公司会把rm做alias或者用safe-rm来避免误删。第3题ls命令有哪些常用参数如何查看隐藏文件ls -l显示详细信息-a显示隐藏文件-h人性化显示大小-t按时间排序-S按大小排序-R递归列出子目录。组合使用最常见ls -lah。隐藏文件以.开头普通ls不会显示但要注意ls -A和ls -a的区别-A不显示.和..两个特殊目录写脚本时通常用-A更安全。第4题软链接和硬链接有什么区别如何创建这是面试重灾区。硬链接的本质是多个文件名指向同一个inode删除其中一个文件名不影响其他链接只有当所有硬链接都被删除数据块才被释放。软链接符号链接是一个独立文件存放的是目标文件的路径如果目标文件被删除软链接就变成“死链”。创建命令ln source hardlinkln -s source softlink。面试官还爱问“硬链接可以跨文件系统吗”答案是不行因为不同文件系统的inode编号独立硬链接直接记录inode号跨文件系统会失效。软链接可以跨文件系统因为它存的是路径。2.2 文件操作、内容查看与统计第5题如何查找文件find和locate有什么区别find是实时搜索按文件名、大小、时间、权限等条件查找比如find /var/log -name *.log -mtime -7。locate依赖数据库/var/lib/mlocate/mlocate.db速度极快但不够实时新创建的文件可能搜不到需要先执行updatedb更新数据库。面试官常问find查找后怎么批量删除典型做法是find /tmp -name *.tmp -exec rm {} \;或者用-delete参数。注意-exec后面必须加上\;结尾很多人会漏掉。第6题查看文件内容有哪些命令如何查看正在变大的日志cat适合小文件全文查看less支持翻页和搜索适合大文件head -n 20看前20行tail -n 50看后50行。如果日志在持续写入用tail -f实时跟踪生产环境排障最常用。追问点大文件几百MB用cat会把屏幕刷爆用vi也会卡正确的做法是tail -n 100先看尾部再用grep过滤关键字比如grep ERROR app.log | tail -n 50。另外less打开大文件比vi快很多按G跳到最后按/搜索。第7题如何统计文件行数、字数和字符数wc -l file统计行数-w统计单词数-c统计字节数-m统计字符数。注意中文字符下-c和-m结果不同一个中文UTF-8编码占3字节。场景题如何统计日志中某个关键字出现了多少次常见答案是grep -c KEYWORD file但grep -c统计的是包含关键字的行数如果一行里有多个关键字它只计1次。精确统计次数要用grep -o KEYWORD file | wc -l。这个坑面试官经常挖。第8题cp和mv的本质区别是什么如何保留原始属性拷贝cp是复制源文件仍然存在mv是移动源文件消失。同文件系统内mv只是修改目录项不涉及数据复制所以速度快跨文件系统mv实际上是“复制删除”。拷贝目录用cp -r。要保留权限、时间戳等属性用cp -p如果要完整保留包括ACL、xattr等用cp -a-a等于-dR --preserveall。面试官常问mv一个正在被进程写入的文件会发生什么答案是文件在目录中被移走但原inode仍被打开它的进程引用磁盘空间不会释放直到进程关闭文件。这和rm之后空间不释放是同一个道理。2.3 压缩、磁盘与inode第9题如何压缩和解压.tar.gz、.zip、.bz2文件tar本身只打包不压缩。打包并gzip压缩tar czvf archive.tar.gz /path。解压tar xzvf archive.tar.gz。.tar.bz2把z换成j即可cjvf、xjvf。.zip文件用zip和unzipzip -r archive.zip dirunzip archive.zip。要记住tar参数里的c是创建x是解压z表示gzipj表示bzip2v显示过程f后面必须紧跟文件名。还有一个常用参数--excludetar czvf backup.tar.gz /data --exclude/data/cache面试场景里经常问如何排除指定目录。第10题df和du有什么区别为什么df显示磁盘满了du却找不到大文件df查看文件系统分区的使用情况df -h人性化显示df -i查看inode使用率。du统计目录或文件实际占用的磁盘块大小du -sh *可以看当前目录下每个项目的大小。“磁盘明明满了但du找不到文件”的经典原因是有文件被删除但仍有进程持有它的句柄。df看的是文件系统层面磁盘块确实被占用du按目录扫描时被删除的文件已经不在目录中所以统计不到。排查方法是用lsof | grep deleted找到对应进程后重启或重开文件。inode也常在这里被追问df -i如果inode用满文件系统依然会报“No space left on device”但df -h看空间还有剩余。这种情况通常是大量小文件把inode耗尽需要用find /dir -type f | wc -l数一下文件量级。3. 权限、用户与安全面试官最爱深挖的“提权”题3.1 基础权限与数字权限第11题Linux文件权限中的r、w、x分别代表什么如何修改属主和属组r读w写x执行。它们分别作用于文件或目录时含义不同。对目录来说r能列出目录内容w能在目录中创建/删除文件x能进入目录。这也是为什么有时候文件有权限但目录没x权限依然无法访问。修改权限用chmod修改属主用chown修改属组用chgrp。常用方式chmod ux file给属主加执行权限chmod g-w file去掉属组的写权限chown user:group file同时修改属主和属组。递归修改目录下所有文件用-R。第12题数字权限755、644、600分别表示什么数字权限中r4w2x1。755代表属主rwx属组r-x其他人r-x。644代表属主rw-属组r--其他人r--。600代表属主rw-其他人没有任何权限。常见配置文件一般用644可执行文件和目录一般用755私钥文件必须600。这里面试官常追问umask。umask决定默认权限文件默认666目录默认777去掉umask对应的权限位。如果umask是022新建文件权限就是644新建目录就是755。可以用umask命令查看和修改。3.2 用户、su与sudo第13题root用户和普通用户有什么区别如何创建用户、设置密码、删除用户root的UID是0拥有系统最高权限可以访问任何文件、管理任何进程。普通用户权限受限于文件权限和系统策略。创建用户用useradd设置密码用passwd删除用户用userdel。如果用户目录也删掉用userdel -r。要注意useradd和adduser在CentOS和Ubuntu上的差异adduser在Debian系是交互式脚本会主动创建家目录、设置密码等useradd更底层不加参数不会创建家目录。第14题su和sudo有什么区别怎样给普通用户授予sudo权限su是切换用户比如su - root会切到root并加载root的环境变量sudo是以其他用户身份执行单条命令当前用户仍是自己只需输入自己的密码。sudo比su安全得多因为不暴露root密码且有审计日志。给用户授权修改/etc/sudoers用visudo编辑增加一行username ALL(ALL) ALL。更细粒度的是只允许特定命令比如username ALL(ALL) /usr/bin/systemctl。面试官常问“sudo执行命令时用哪个密码”答案是当前用户的密码不是目标用户的密码。还有sudo -i和sudo su的区别sudo -i直接以root身份登录环境变量也是root的。3.3 特殊权限、账户安全与ACL第15题什么是SUID、SGID和Sticky Bit分别有什么作用SUIDSet User ID文件设置了SUID后其他用户执行该文件时进程的有效用户ID变成文件属主。典型例子是/usr/bin/passwd普通用户执行它时能临时获得root权限去修改/etc/shadow。SGID类似但对目录还有继承属组的作用。Sticky Bit粘滞位用于共享目录最常见的是/tmp目录里用户只能删除自己的文件。表示方法SUID是4SGID是2Sticky是1例如chmod 4755 filechmod 1777 /tmp。也支持字母方式chmod us file、chmod ot dir。面试官爱问“如何查找系统中有SUID权限的文件”答案是find / -perm -4000这是排查提权漏洞的常用手段。第16题/etc/passwd和/etc/shadow分别存储什么为什么shadow更安全/etc/passwd存储用户名、UID、GID、家目录、登录Shell等信息早期密码哈希也在这里但passwd是world-readable任何人都能读取暴力破解风险高。后来密码哈希移到了/etc/shadow该文件仅root可读普通用户看不到哈希值。shadow里还保存密码的修改日期、过期时间等策略字段。追问点为什么哈希值不能直接暴露因为很多用户使用弱密码拿到哈希后可以用字典离线破解即使算法是SHA512弱密码也撑不了多久。第17题如何查看当前哪些用户登录了系统如何踢掉非法登录用户who查看当前登录用户、终端和时间w更详细还显示每个用户正在执行的命令last查看历史登录记录包括重启记录。检查是否存在异常登录除了看last还要看/var/log/secure或/var/log/auth.log中反复失败的SSH登录记录。踢人一般用pkill -kill -t pts/1指定终端号终止对应会话。更温和的做法是先给用户发消息wall提醒他退出再强制踢。面试题里问“发现服务器被暴力破解怎么办”答案不止是踢人还要改端口、禁用密码登录、配置fail2ban等。第18题什么是ACL和普通权限有什么关系ACLAccess Control List用来给某个特定用户或用户组单独设置权限而不改变文件属主和属组。普通权限的“属主、属组、其他人”三段模型太粗比如你想给用户zhangsan只读权限但zhangsan既不是属主也不在属组里普通权限做不到ACL可以。用法setfacl -m u:zhangsan:r-- filegetfacl file查看。设置了ACL后权限位末尾会出现号。追问点ACL和chmod同时存在时怎么生效实际是ACL优先且ACL会扩展权限掩码。如果不想要ACL了用setfacl -b file移除所有ACL条目。4. 进程、系统与服务从启动流程到systemd一整套排查思路4.1 进程查看、信号与僵尸进程第19题ps、top、htop有什么区别如何查看指定进程ps是静态快照执行一次显示那一刻的进程状态。ps aux按用户、PID、CPU、内存、命令等列出全部进程ps -ef格式略有不同。top是动态刷新实时显示CPU和内存占用排序。htop是top的增强版支持鼠标操作、树形显示、直接杀进程但通常需要额外安装。查看指定进程pgrep -f nginx可以按完整命令行匹配ps aux | grep nginx是最基础的方式。注意grep会匹配到自己的那条命令通常用grep -v grep过滤或者用pgrep替代。另一种方式是ps -C nginx按命令名精确匹配。第20题如何终止进程kill、pkill、killall的区别SIGTERM和SIGKILL的区别kill默认发送15号信号SIGTERM让进程优雅退出可以先清理资源。如果进程无响应再用kill -9发送9号信号SIGKILL强制杀死。kill需要指定PIDpkill按进程名匹配比如pkill -f javakillall按精确进程名匹配killall nginx。面试追问为什么不要一上来就kill -9因为SIGKILL不能被捕获和忽略进程没机会保存状态、关闭文件、释放锁可能导致数据损坏或残留脏数据。正确顺序是先killSIGTERM等几秒没反应再kill -9。某些程序还会注册handler处理SIGTERM做优雅下线。第21题什么是僵尸进程和孤儿进程怎么产生的如何清理子进程退出后内核会保留一段退出状态供父进程用wait()读取。如果父进程没有调用wait()子进程就变成僵尸进程Zombie进程资源已释放但PID和进程表项还在。孤儿进程是父进程先退出子进程被init/systemd接管收养不算问题由systemd负责回收。清理僵尸进程的难点在于它已经“死”了kill不掉。正确做法是杀掉或重启它的父进程让父进程对子进程调用wait回收。排查ps aux | grep Z或top里看到Z状态。如果父进程是init/systemd一般不会长期存在僵尸。这道题能区分候选人是只背概念还是真的排过障。4.2 系统监控指标uptime、free、vmstat第22题如何查看系统CPU、内存和负载情况uptime、free、vmstat分别能看什么uptime显示当前时间、运行时长、登录用户数、1/5/15分钟平均负载。负载不是CPU使用率而是处于R运行状态和D不可中断睡眠状态的进程平均数负载大于CPU核心数说明有排队。free -h查看内存总量、已用、可用、buff/cache。vmstat 1 5每1秒采样5次列出运行队列、swpd、si/so、us/sy/wa/id等关键指标。实时交互时用top但脚本化监控更适合vmstat。如果waiowait高说明磁盘IO是瓶颈如果si/so持续非零说明内存在频繁换页需要加内存或优化应用。面试官可能追问“load average多高算高”这取决于CPU核数单核load超过1就开始排队16核load到12都不一定有问题要结合上下文判断。4.3 开机启动、systemd与定时任务第23题Linux系统的启动流程是怎样的简化版的启动流程BIOS/UEFI自检并选择启动设备 → 读取引导加载器GRUB2 → GRUB加载内核和initramfs → 内核初始化硬件挂载根文件系统 → 启动PID为1的systemd进程 → systemd执行default.target按依赖关系启动各服务 → 启动getty显示登录界面。面试官常问“内核最后一个是systemd前面init/systemd是什么关系”。早期用SysV init通过/etc/inittab定义运行级别用service命令管理脚本现在主流是systemd通过unit文件和服务依赖管理启动。理解启动流程对定位“开机起不来”“登录卡住”这类问题很有帮助。第24题systemd是什么如何用systemctl管理服务systemd是Linux的系统和服务管理器负责在开机时并行启动服务并提供服务依赖、socket激活、资源控制等能力。常用命令systemctl start|stop|restart|reload nginxsystemctl enable nginx设置开机自启systemctl disable nginx取消自启systemctl status nginx查看状态和最近日志systemctl is-active nginx只输出active/inactive适合脚本判断。写脚本时尽量避免systemctl restart后立刻systemctl status判断因为服务可能还在启动中。更可靠的是用systemctl is-active --quiet nginx加sleep重试循环。第25题Linux运行级别target有哪些如何切换SysV init时代有0-6七个运行级别3是多用户命令行5是图形界面。systemd用target替代常见的有poweroff.target关机、rescue.target单用户/救援、multi-user.target多用户命令行、graphical.target图形界面。查看当前targetsystemctl get-default设置默认targetsystemctl set-default multi-user.target临时切换systemctl isolate multi-user.target。救援模式单用户是忘记root密码排查的重要入口在GRUB菜单按e编辑内核启动参数在linux行末尾加single或init/bin/bash进入后挂载文件系统改密码。面试中问“root密码忘了怎么办”答案就围绕这个思路。第26题如何使用crontab配置定时任务定时任务不执行怎么排查crontab -e编辑当前用户的任务crontab -l查看crontab -r清理。格式是分 时 日 月 周 命令。*/5 * * * *每隔5分钟0 2 * * *每天凌晨2点。系统级任务在/etc/crontab需要指定用户名。定时任务不执行的排查顺序先crontab -l确认条目在再看/var/log/cron日志然后手动执行命令确认本身没问题接着检查环境变量因为cron的PATH很精简很多命令要用绝对路径最后确认crond服务是否运行systemctl status crond。还有一个常见坑脚本中使用了相对路径或依赖了交互环境变量手动执行成功但cron执行失败。4.4 性能问题定位思路第27题如何排查一个进程CPU占用过高请描述完整思路。先top看哪个进程CPU最高记下PID。然后按P键按CPU排序也可以。如果需要定位到线程用top -H -p PID查看这个进程下所有线程的CPU找到那个线程的TIDThread ID。如果应用是Java可以用jstack把线程栈导出把TID转成十六进制printf %x\n TID然后在线程栈里搜索这个十六进制就能看到卡在哪段代码。如果是Python应用可以用py-spy或者gdbattach上去看调用栈。如果进程在内核态消耗高比如sy很高可以用perf top看热点函数。这套思路面试官会连环追问答出“先现象→再定位→最后深入代码”的层次就能拿高分。5. 网络、SSH与远程同步讲清楚原理才不会被追问倒5.1 网络配置与连通性第28题ifconfig和ip addr有什么区别如何配置临时IPifconfig来自net-tools已经停止维护功能有限ip addr来自iproute2功能更强是现代Linux推荐工具。查看IPip addr show查看路由ip route添加临时IPip addr add 192.168.1.100/24 dev eth0重启网络或网卡后临时IP会消失。永久配置IP在不同发行版方法不同CentOS/Rocky的/etc/sysconfig/network-scripts/ifcfg-eth0Ubuntu的/etc/netplan/*.yaml。面试官喜欢问“改了IP后上不了网怎么排查”。优先看ip route有没有默认路由route -n可以看再看DNS配置和网关能不能ping通。很多人只改IP忘了同步路由导致同网段通但跨网段不通。第29题如何测试网络连通性ping、telnet、nc、curl各适合什么场景ping基于ICMP测试主机是否在线和网络延迟但很多云主机会禁ICMPping不通不代表服务不在。telnet ip port测试TCP端口是否开放比如telnet 10.0.0.5 3306能连上说明MySQL端口通。ncnetcat更强大像瑞士军刀nc -zv ip port扫端口还可以用来传文件、做端口转发。curl测试HTTP/HTTPS接口能看状态码、响应头、下载内容等。追问点telnet连不上端口怎么区分是网络不通还是服务没监听先ping看主机通不通再ss -lntp在目标机器上看端口是否LISTEN然后看本机防火墙是否拦截。三层层面通了四层端口没通问题多数在服务本身或防火墙。5.2 端口、DNS与防火墙第30题如何查看当前系统监听的端口ss和netstat有什么区别如何杀掉占用端口的进程ss -lntp查看所有监听的TCP端口并显示进程名和PIDnetstat -lntp同样功能但netstat在部分新系统里需要额外安装且大连接数下比ss慢。要查看所有连接包括ESTABLISHED、TIME_WAIT等用ss -antp。占用端口处理先ss -lntp | grep 8080找到PID然后kill PID或者fuser -k 8080/tcp直接杀。注意不要随便kill系统关键端口进程比如22端口对应sshdkill了会断开远程连接。第31题/etc/hosts和/etc/resolv.conf各有什么作用DNS解析顺序是什么/etc/hosts是静态主机名映射表优先级高于DNS服务器。/etc/resolv.conf指定DNS服务器核心配置项nameserver 8.8.8.8和search example.com。解析顺序默认是hosts文件 → DNS缓存如systemd-resolved → DNS服务器具体优先级由/etc/nsswitch.conf控制通常写的是hosts: files dns说明files先于dns。面试云场景常见题为什么我改了域名解析记录本机还是访问到旧IP因为本机有DNS缓存可用systemd-resolve --flush-caches或重启systemd-resolved清缓存。也有可能是浏览器缓存或CDN节点缓存。第32题什么是防火墙firewalld、iptables、ufw的关系是什么如何放行端口防火墙通过规则控制进出数据包。iptables是Linux内核netfilter框架的管理工具规则配置较为繁琐。firewalld是CentOS/RHEL 7默认的防火墙服务基于iptables封装按zone管理区域默认zone是public。ufw是Ubuntu上的简化封装适合个人使用底层同样是iptables/nftables。放行端口示例firewalld用firewall-cmd --permanent --add-port8080/tcp firewall-cmd --reloadufw用ufw allow 8080/tcpiptables用iptables -A INPUT -p tcp --dport 8080 -j ACCEPT。面试官常问“放行端口后还是不通”依次检查服务是否监听0.0.0.0而不是只监听127.0.0.1云平台安全组是否放行本机firewalld是否生效如果用的docker还要看iptables规则是否被docker覆盖。5.3 SSH与远程文件同步第33题SSH免密登录的原理是什么如何配置SSH免密登录基于非对称加密。客户端生成一对密钥公钥放到服务器的~/.ssh/authorized_keys中。登录时客户端用私钥签名服务器用公钥验证验证通过就免密登录。配置步骤客户端执行ssh-keygen -t rsa -b 4096生成密钥用ssh-copy-id userserver把公钥追加到服务器登录时ssh userserver即可。追问点私钥文件权限必须是600公钥和.ssh目录权限不能太开放否则sshd会拒绝使用。如果有多台服务器可以在~/.ssh/config里配置别名Host myserverHostName 192.168.1.10User rootIdentityFile ~/.ssh/id_rsa日常操作能省很多事。第34题scp和rsync有什么区别如何实现增量同步scp基于SSH协议每次全量拷贝适合小文件或一次性传输。rsync支持增量同步只有变化的部分才会传输还能保留权限、属主、时间戳等属性是备份和发布代码的常用工具。基本用法rsync -avz /local/path userserver:/remote/path。-a归档模式保留属性并递归-z压缩传输-v显示过程。增量同步需要服务端也安装rsync如果走SSH协议则不需要额外启动服务。面试常问“rsync和scp哪个适合大目录”答案是rsync。但在跨平台如Windows到Linux场景scp更通用。注意rsync同步目录时源路径结尾带不带/行为不同rsync -avz src/ dest/会同步目录里的内容rsync -avz src dest/会在dest下创建src目录。6. Shell脚本与文本处理现场写代码的实战题6.1 脚本基础与特殊符号第35题Shell脚本第一行#!/bin/bash的作用是什么执行脚本有哪些方式这行叫shebang告诉内核用哪个解释器来执行脚本。如果不写当前shell会把脚本当作bash脚本执行但不够明确写了#!/bin/bash即使脚本是sh或nohup执行环境也相对可控。执行方式bash script.sh明确用bash解释./script.sh要求脚本有执行权限并依赖shebangsource script.sh或. script.sh是在当前shell中执行脚本里的变量会保留到当前环境。面试易错点./script.sh可以执行说明文件有x权限但如果在文件系统上挂载了noexec即使有x权限也执行不了另外脚本文件编码如果是DOS格式\r\n执行时会报bad interpreter需要dos2unix转换。第36题Shell中单引号和双引号有什么区别$?、$#、$分别表示什么单引号里的所有字符都是字面量变量不会被展开双引号会展开变量但不会对$、反引号之外的字符做通配符展开。比如nameworldecho $name输出$nameecho $name输出world。特殊变量$?表示上一条命令的退出码0为成功非0为失败$#是脚本参数个数$表示所有参数的列表每个参数独立$*把所有参数当成一个字符串。遍历参数一般用for arg in $因为$能正确处理带空格的参数。第37题重定向符号、、21、分别代表什么如何将标准输出和错误输出同时写入文件把标准输出写入文件并覆盖追加21把标准错误重定向到标准输出当前所在的位置从文件读取输入。常见组合cmd out.log 21把标准输出和标准错误都写入out.log。21的位置有讲究如果写cmd 21 out.log标准错误会被重定向到当前标准输出终端而标准输出才写入文件结果错误信息还是打在屏幕上。是bash和zsh的语法等同于 file 21比如cmd out.log。面试官还可能问/dev/null是什么它是一个黑洞设备写入的数据直接丢弃cmd /dev/null 21常用于丢弃所有输出。第38题管道符|的作用是什么如何把前一个命令的输出作为后一个命令的输入管道把前一个命令的标准输出接到后一个命令的标准输入实现进程间通信。比如ps aux | grep nginx | grep -v grep就是典型的管道链。管道和重定向的区别重定向操作的是文件管道操作的是进程。追问点cmd1 | cmd2的退出码怎么看管道的退出码默认是最后一个命令的退出码$?是cmd2的。如果要求cmd1失败时管道也失败可以用set -o pipefail。这个坑在写部署脚本时特别常见。第39题grep的常见用法有哪些如何查找文件中包含关键字的行并显示行号grep keyword file列出匹配行grep -n keyword file显示行号grep -i忽略大小写grep -r递归查找目录grep -o只输出匹配部分grep -E使用扩展正则等价于egrep。比如grep -nE ^ERROR|FATAL app.log可以匹配多关键字且显示行号。生产中更常用的是结合管道grep ERROR app.log | tail -n 100只看最后100条错误。如果要排除某个关键字用grep -v比如ps aux | grep java | grep -v grep。第40题sed和awk各擅长解决什么问题用它们分别实现“把abc替换为123”和“打印第2列”。sed是流编辑器擅长按行处理替换、删除、插入。替换sed -i s/abc/123/g file-i是原地修改不加则输出到屏幕。如果只替换文件中的第2到5行的内容可以sed -i 2,5s/abc/123/g file。awk更适合按列处理和做统计。打印第2列awk {print $2} file。如果要按逗号分隔awk -F, {print $2} file。awk还能做求和awk {sum$1} END{print sum} file。面试现场最常考的就是s/xxx/yyy/g和$2这两个点必须脱口而出。第41题有哪些Shell小技巧比如查看历史命令、使用别名。history查看历史命令记录!可以重复执行!!执行上一条命令!$表示上一条命令的最后一个参数。alias定义别名比如alias llls -lh临时生效要永久生效写入~/.bashrc。想跳过别名执行原始命令在命令前加反斜杠比如\rm。还有一个实用技巧是CtrlR反向搜索历史命令。面试官问“不小心执行了rm -rf还有机会恢复吗”除了提醒先备份还可以说如果文件被进程占用可以从/proc/PID/fd恢复否则常规文件删除后恢复难度很大。这个例子说明养成好习惯比事后恢复重要得多。7. 综合排障与概念题拉开差距的最后几道题7.1 两类高频综合排障题第42题一台Linux服务器突然变慢你如何按顺序排查回答这类题的关键是展示排查顺序而不是直接抛结论。我一般按这个顺序先uptime看负载如果负载高再top看是CPU还是内存。top里面按P看CPU排序按M看内存排序。如果CPU不高vmstat 1看wa高不高高则说明磁盘IO在等。iostat -x 1看具体哪个磁盘的%util高。如果内存不够看free -hsi/so是否持续非零。接着dmesg -T | tail看有没有OOM、硬件报错。还要看网络sar -n DEV 1看网卡流量ss -ant看连接数是不是异常。最后结合应用日志因为系统问题的根源往往在应用比如Java的GC停顿、慢SQL、线程池打满。面试时不需要把每条命令都背出来只要让面试官感觉到你有“由外到内、由系统到应用”的层次感。第43题线上CPU飙升到100%如何定位是哪个进程导致如何进一步定位到具体线程第一步top找到CPU最高的进程PID。第二步top -H -p PID查看该进程下所有线程找到CPU最高的线程TID。第三步如果是Java进程把TID转十六进制printf %x\n TID然后用jstack PID | grep -A 30 十六进制就能看到线程卡在哪个方法。如果是C/C用gdb attach PIDthread apply all bt打印所有线程栈。如果是内核线程CPU高可以用perf top看热点函数或者查/proc/PID/stack。这个问题我给所有人的建议是top -H -p和jstack这两板斧必须练熟面试问到这个基本是面试官想看你有没有真实排障经验。7.2 两道体现深度的概念题第44题如何理解Linux的“一切皆文件”请举例说明。“一切皆文件”是Linux哲学的核心。普通文件、目录、字符设备、块设备、socket、管道在内核里都通过文件描述符和虚拟文件系统操作接口来抽象。比如磁盘设备对应/dev/sda网络连接可用/proc/net/tcp查看某个进程运行参数在/proc/PID/下这些都是“文件”形式。追问点为什么称为“文件”而不是“对象”因为Linux的VFS抽象层提供了统一的open/read/write/close接口上层应用可以用同样的系统调用操作不同设备。这个设计让工具复用性极强比如cat /proc/cpuinfo查看CPU信息ls /dev查看设备echo可以写配置到/sys/class/...。回答加分项是提到/proc和/sys这两个伪文件系统是了解内核状态的窗口。第45题你如何保障Linux服务器的安全谈谈你的加固思路。面试官期待的不是“装杀毒软件”这种话而是一个系统化的防御思路。我会从几个层面讲账户与认证层面禁止root直接SSH登录PermitRootLogin no使用SSH密钥认证并禁用密码登录创建普通用户用sudo提权配置fail2ban防御暴力破解。软件与更新层面定期执行系统更新yum update或apt upgrade只安装必要软件包及时处理已知漏洞。网络层面用防火墙只放行需要的端口尽量不暴露数据库、Redis等内网服务敏感端口用安全组限制来源IP。文件系统层面合理设置文件和目录权限避免chmod 777重要配置文件设置不可修改属性chattr i定期检查SUID文件。审计与监控层面开启auditd审计监控关键文件和命令执行部署入侵检测如OSSEC、Wazuh日志集中收集并做告警。最后一定要强调“安全不是一次性加固而是持续运营”定期做基线检查和应急演练。这个回答能体现你在生产环境里的综合素养。这45题覆盖了大多数初级和中级岗位的Linux基础考点。实际面试中面试官问的往往不是单一命令而是“遇到某个现象你怎么排查”。所以刷题的时候多问自己几个“为什么”把命令背后的原理和适用场景想清楚效果会好很多。如果你正准备面试建议先按知识块过一遍再找朋友模拟提问。祝顺利拿下Offer。