Linux高级面试题及详细答案(实战版)_第1页
Linux高级面试题及详细答案(实战版)_第2页
Linux高级面试题及详细答案(实战版)_第3页
Linux高级面试题及详细答案(实战版)_第4页
Linux高级面试题及详细答案(实战版)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux高级面试题及详细答案(实战版)本套面试题聚焦生产环境高频高级考点,摒弃基础入门内容,适配运维高级工程师、云原生运维、系统架构岗面试,答案结合线上故障排查、性能调优实战经验,贴合企业真实考核标准。一、系统内核与进程管理(高级核心)1、详细说明Linux进程的五种状态及内核调度逻辑,生产中D状态进程如何处理?参考答案:Linux进程核心分为五种状态,对应内核调度队列逻辑不同:1.R运行态:进程正在CPU执行,或处于就绪队列等待CPU调度,是唯一可被CPU执行的状态。2.S可中断睡眠态:进程等待资源(网络数据、锁、用户输入),可被信号唤醒,是线上最常见的睡眠状态。3.D不可中断睡眠态:进程正在等待IO硬件响应(磁盘、存储阵列、NFS),不响应任何信号,kill-9也无法终止。大多是磁盘IO阻塞、存储链路卡顿、文件系统卡死导致。4.T停止态:进程被暂停,可通过SIGCONT信号恢复运行,常见于程序调试、进程挂起操作。5.Z僵尸态:进程已执行完毕退出,父进程未调用wait()回收子进程PCB资源,进程实体消失、仅保留进程号和状态信息,会占用系统PID资源。D状态进程生产处理方案:首先排查磁盘、NFS、存储服务是否异常,查看dmesg日志是否有IO报错、磁盘超时、文件系统损坏信息。切勿直接重启服务器,优先尝试卸载卡死的挂载目录、恢复存储链路。若为单个进程卡死,可等待IO超时自动恢复;批量D状态进程大概率是底层存储故障,需排查存储阵列、磁盘坏道、网络存储链路问题。2、僵尸进程和孤儿进程的区别,生产中如何彻底解决僵尸进程堆积问题?参考答案:核心区别:孤儿进程:父进程先于子进程退出,子进程被init进程(PID=1)收养,资源会被正常回收,无任何危害。僵尸进程:子进程先退出,父进程不回收子进程资源,残留PCB信息,大量堆积会耗尽系统PID,导致新进程无法创建。生产解决方案:1.临时处理:找到僵尸进程的父进程,重启父进程服务,init进程会自动回收所有僵尸子进程,快速释放PID资源。2.根治方案:开发层面优化程序,父进程增加子进程退出信号监听,主动调用wait/waitpid回收子进程;运维层面可通过定时脚本监控僵尸进程数量,触发告警并自动重启异常服务。3.禁止暴力处理:僵尸进程无法通过kill命令杀死,只能通过父进程回收解决。3、详解Linux内核OOM机制,OOMkiller的挑选策略,如何规避业务进程被误杀?参考答案:OOM是内核内存溢出保护机制,当系统内存、Swap全部耗尽,无法为新进程分配内存时,内核会触发OOMkiller杀死部分进程,保证系统内核正常运行,避免整机卡死。OOM进程挑选策略:内核会为每个进程计算oom_score评分,分数越高越优先被杀死。评分核心依据:进程占用内存大小、进程运行时长、进程优先级、oom_score_adj权重。默认规则:占用内存越多、新启动的进程,评分越高,越容易被查杀。业务误杀规避方案:1.核心业务进程设置oom_score_adj=-1000,直接禁止OOMkiller查杀,优先级最高。2.优化系统内核参数,调整/proc/sys/vm/swappiness降低Swap使用,避免内存频繁置换导致假性内存不足。3.限制容器/服务最大内存使用,提前触发服务熔断,而非系统OOM查杀。4.监控系统内存、可用PID、缓存占用,提前扩容优化,避免内存耗尽。二、性能调优与线上故障排查1、线上CPU负载过高,完整排查思路和定位流程是什么?区分CPU使用率和CPU负载的差异参考答案:CPU使用率与CPU负载核心差异:CPU使用率:统计当前时刻CPU正在运行任务的占比,反映CPU瞬时忙碌程度,高使用率代表程序一直在占用CPU运算。CPU负载:统计一段时间内CPU就绪队列的任务总数(1分钟、5分钟、15分钟),包含正在运行和等待运行的进程,负载过高代表CPU任务堆积、处理不过来。线上高负载排查完整流程:1.全局查看:top、uptime确认负载数值,判断是单核还是多核满载,区分瞬时高负载还是持续高负载。2.定位进程:top-H查看占用CPU最高的进程、线程,shift+P排序定位异常PID、TID。3.定位代码:通过pidstat、strace、pstack跟踪进程调用栈,查看是否存在死循环、频繁系统调用、锁竞争。4.区分场景:用户态CPU高(程序代码逻辑问题)、内核态CPU高(系统调用频繁、内核bug、磁盘IO卡顿)、iowait高(磁盘IO阻塞导致CPU等待)。5.溯源解决:优化程序死循环、释放无效锁、修复磁盘故障、调整进程优先级。2、线上内存泄漏如何排查?区分内存泄漏、内存溢出、内存溢出OOM参考答案:三者核心区别:1.内存泄漏:程序申请内存后,使用完毕未释放,长期运行导致内存占用持续上涨,不会立刻报错,是缓慢的资源消耗。2.内存溢出:程序申请的内存超出系统分配上限,即时报错,程序直接崩溃。3.OOM:系统全局内存耗尽,内核主动查杀进程,属于系统级保护机制。内存泄漏排查流程:1.监控趋势:通过free、sar、top观察内存长期变化,确认是缓存占用还是进程内存持续上涨。2.定位异常进程:排序查看各进程RSS、VSZ内存占用,锁定持续涨内存的服务。3.精准分析:使用valgrind工具检测程序内存泄漏点,通过/proc/pid/smaps查看内存分段占用,区分堆内存、栈内存、共享内存泄漏。4.验证修复:重启服务临时释放内存,优化代码内存释放逻辑,上线后持续监控内存曲线。3、磁盘IO过高导致业务卡顿,排查及优化方案参考答案:排查步骤:1.iostat-x1查看磁盘读写使用率、await、svctm指标,await过高代表IO队列阻塞、请求堆积。2.pidstat-d1定位占用磁盘IO最高的进程,确认是日志写入、数据同步、备份任务导致。3.iotop实时查看进程IO读写速度,区分读IO高、写IO高。4.查看dmesg、/var/log/messages,排查磁盘坏道、文件系统错误、存储延迟。生产优化方案:1.业务优化:拆分大文件读写、减少频繁小文件IO、异步打印日志、批量写入数据。2.系统优化:调整磁盘调度算法(SSD选noop、机械盘选mq-deadline),优化vm.dirty_ratio、vm.dirty_background_ratio参数,减少脏页堆积。3.硬件优化:机械盘更换SSD、拆分IO密集型任务到不同磁盘、规避业务高峰执行备份、清理任务。三、Linux网络高级原理与故障排查参考答案:三次握手核心逻辑:建立可靠连接,确认双方收发能力正常。客户端发SYN→服务端回SYN+ACK→客户端发ACK,连接建立,解决网络延迟、丢包导致的连接失效问题。四次挥手核心逻辑:TCP全双工通信,读写通道独立关闭。客户端发FIN(关闭读)→服务端回ACK→服务端发FIN(关闭写)→客户端回ACK,连接彻底断开。2、生产中端口监听正常,但业务无法连接,完整排查思路参考答案:1.本地校验:服务器本地telnet、curl127.0.0.1:端口,验证服务本身是否正常监听、程序是否卡死。2.网络连通性:排查客户端到服务端IP路由是否通畅,ping、mtr排查丢包、路由跳转异常。3.防火墙策略:检查服务器iptables、firewalld是否放行对应端口,云服务器需核对安全组规则。4.监听地址:确认服务是监听0.0.0.0(全网段)还是127.0.0.1(仅本地),监听本地地址外网无法访问。5.内核限制:排查服务器是否达到最大文件句柄、最大TCP连接数限制,导致新连接无法接入。6.链路拦截:排查上层网关、负载均衡、代理服务是否拦截、丢弃请求。3、详解Linux内核tcpkeepalive机制,生产中如何配置适配长连接业务参考答案:TCPkeepalive是内核保活机制,用于检测长连接是否断开,清理僵死连接,释放无效连接资源。核心三个内核参数:1.tcp_keepalive_time:连接空闲多久后开始发送保活探测包,默认7200秒,生产长连接业务建议调整为60秒。2.tcp_keepalive_intvl:探测包发送间隔,默认75秒,建议调整为10秒。3.tcp_keepalive_probes:探测失败重试次数,默认9次,建议调整为3次。生产适配方案:针对数据库、MQ、远程连接等长连接业务,调小保活参数,快速识别断开的无效连接,避免连接僵死堆积;同时配合业务层心跳机制,双重保障连接稳定性,防止内核保活参数过严误杀正常连接。四、文件系统、磁盘与权限高级知识点1、ext4和xfs文件系统的核心区别,生产环境如何选型?参考答案:ext4特点:老牌稳定文件系统,日志完善,兼容所有Linux版本,支持碎片整理、磁盘检查,小文件读写性能稳定。缺点:大文件、大容量磁盘(2T以上)性能衰减明显,高并发读写吞吐量一般。xfs特点:高性能日志文件系统,针对大磁盘、大文件、高并发读写优化,大容量磁盘性能优异,支持动态扩容。缺点:不支持碎片整理、不支持缩容,磁盘损坏后修复速度较慢。生产选型规则:1.小容量磁盘、系统盘、需要频繁修复、小文件业务:优先ext4。2.大容量数据盘、高并发业务、大数据存储、日志存储、数据库业务:优先xfs。2、Linux文件删除后磁盘空间不释放的原因及解决办法参考答案:核心原因:Linux文件删除只是删除文件的目录索引,若文件被进程占用(日志文件、数据文件被服务挂载读取),文件真实数据不会被删除,磁盘空间无法释放,重启服务前空间持续占用。排查命令:lsof|grepdeleted查看已删除但未释放的文件及占用进程。解决办法:1.临时快速释放:重启对应占用文件的服务进程,内核自动回收磁盘空间。2.线上无损处理:不要直接rm删除大日志文件,使用cat/dev/null>文件名清空文件,不中断进程读写,实时释放空间。3.根治方案:规范日志切割策略,通过logrotate定时切割、归档、删除日志,避免手动删除文件导致空间不释放。3、SUID、SGID、粘滞位的作用及生产使用场景参考答案:1.SUID(4xxx):文件执行时,临时拥有文件所有者权限,仅对二进制可执行文件生效。典型场景:passwd命令,普通用户可临时以root权限修改自身密码。2.SGID(2xxx):文件执行拥有所属组权限;目录设置后,目录内新建文件自动继承目录所属组。场景:团队共享目录,保证所有用户新建文件权限统一。3.粘滞位(1xxx):目录设置后,仅文件所有者、root用户可删除、修改文件,其他用户无权限操作。场景:/tmp临时目录,防止普通用户删除他人的临时文件。生产注意事项:严禁随意给二进制文件配置SUID权限,会产生权限漏洞,导致普通用户提权。五、系统内核参数优化与安全加固1、高并发服务器核心内核参数优化项及原理参考答案:1.net.ipv4.tcp_syncookies=1:开启SYN洪水攻击防护,应对大量无效SYN请求,避免半连接队列占满。3.net.core.somaxconn=65535:调高监听队列最大长度,避免高并发下连接队列溢出、请求丢失。4.fs.file-max=6553500:调高系统最大文件句柄数,适配高并发连接、多文件读写场景。5.net.ipv4.tcp_fin_timeout=30:缩短连接关闭超时时间,快速释放无效连接资源。6.vm.swappiness=10:降低Swap交换概率,优先使用物理内存,避免内存置换导致性能卡顿。2、Linux提权漏洞的常见类型及日常防护手段参考答案:常见提权方式:内核漏洞提权、SUID权限滥用、sudo配置漏洞、定时任务权限漏洞、环境变量劫持提权。生产防护手段:1.定期升级系统内核、修复高危漏洞,规避内核提权风险。2.严格管控SUID、SGID权限,定期扫描系统异常权限文件。3.规范sudo权限配置,最小权限原则,禁止普通用户拥有ALL权限。4.定期检查系统定时任务,禁止普通用户写入系统级定时任务。5.关闭不必要的系统服务、端口,减少攻击面。六、综合故障实战大题(面试压轴)1、业务突然大量超时、响应卡顿,服务器CPU、内存正常,如何排查?参考答案:该场景是线上高频疑难故障,软硬件资源正常,卡顿基本是网络、连接、IO、内核参数、第三方依赖问题,排查流程如下:1.检查磁盘IO:iostat查看await、util,确认是否存在磁盘IO阻塞,导致业务读写超时。3.查看内核日志:dmesg、/var/log/messages,确认是否有网卡丢包、TCP重传、OOM、硬件报错。4.排查依赖服务:数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论