2025年测试linux面试题及答案_第1页
2025年测试linux面试题及答案_第2页
2025年测试linux面试题及答案_第3页
2025年测试linux面试题及答案_第4页
2025年测试linux面试题及答案_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

2025年测试linux面试题及答案1.如何快速定位并终止一个占用CPU资源过高的进程?请描述具体操作步骤及涉及的命令。需结合实时监控工具与进程管理命令。首先使用`top`或`htop`实时查看进程CPU占用,`top`中按`P`键按CPU使用率排序,找到高占用进程的PID。若需更精准统计,可使用`ps-eopid,ppid,comm,%cpu,%mem--sort=-%cpu`按CPU降序排列。确认PID后,优先使用`kill-15PID`发送SIGTERM信号尝试正常终止;若进程无响应,使用`kill-9PID`强制终止。若进程反复启动,需检查是否为systemd服务(`systemctlstatus服务名`)或crontab定时任务(`crontab-l`)触发,必要时禁用服务或删除定时任务。2.简述Linux文件系统中inode的作用,以及如何查看文件的inode信息?当分区出现“磁盘空间足够但无法创建新文件”时,可能的原因是什么?如何解决?inode(索引节点)是Linux文件系统中存储文件元数据的结构,每个文件/目录对应一个inode,记录文件大小、权限、创建/修改时间、数据块指针等信息,不存储文件名(文件名存储在目录的块中)。查看inode信息可使用`ls-i`(显示文件inode号)或`stat文件名`(详细元数据)。无法创建新文件但空间足够时,通常是因inode耗尽(分区的inode数量上限由格式化时`-N`参数或默认算法决定)。解决方法:通过`df-i`查看各分区inode使用情况,找到满的分区;删除无用文件释放inode(即使文件很小,删除后也会释放一个inode);若需长期解决,重新格式化该分区时使用`mkfs.ext4-N更大数量`增加inode总数(注意需备份数据)。3.如何配置Linux系统的静态IP地址?要求同时设置网关、DNS,并说明不同发行版(如Ubuntu22.04与CentOS9)的差异。Ubuntu22.04使用netplan管理网络,配置文件位于`/etc/netplan/.yaml`。示例配置(eth0):```yamlnetwork:version:2renderer:networkdethernets:eth0:dhcp4:noaddresses:[192.168.1.100/24]routes:to:defaultvia:192.168.1.1nameservers:addresses:[8.8.8.8,114.114.114.114]```应用配置:`sudonetplanapply`。CentOS9使用NetworkManager,配置文件位于`/etc/sysconfig/network-scripts/ifcfg-eth0`。示例配置:```iniTYPE=EthernetBOOTPROTO=staticNAME=eth0DEVICE=eth0ONBOOT=yesIPADDR=192.168.1.100PREFIX=24GATEWAY=192.168.1.1DNS1=8.8.8.8DNS2=114.114.114.114```重启网络服务:`sudosystemctlrestartNetworkManager`。差异点:Ubuntu22.04默认通过netplan抽象配置层(支持YAML),底层可调用networkd或NetworkManager;CentOS9直接编辑NetworkManager的ifcfg脚本(INI格式),依赖NetworkManager服务。4.请编写一个Shell脚本,实现以下功能:遍历`/var/log`目录下所有扩展名为`.log`的文件,统计每个文件中“ERROR”关键字的出现次数,并将结果按次数从高到低排序,最后输出到`/tmp/error_count.log`。要求处理大文件时高效,避免内存溢出。脚本需考虑大文件处理效率,使用`grep`的`-c`选项统计次数,结合`find`遍历文件。示例如下:```bash!/bin/bash遍历/var/log下所有.log文件,排除符号链接find/var/log-typef-name".log"|whilereadlogfile;do统计ERROR次数,忽略二进制文件(-I选项)count=$(grep-I-c"ERROR""$logfile"2>/dev/null)仅输出次数大于0的文件if["$count"-gt0];thenecho"$count$logfile"fidone|sort-nr>/tmp/error_count.log```关键点:`find-typef`排除目录和链接;`grep-I`跳过二进制文件避免错误;`sort-nr`按数值逆序排序;使用管道逐行处理,避免将所有结果加载到内存。5.如何排查Linux系统中SSH服务无法连接的问题?请列出详细的排查步骤及常用工具。排查步骤:(1)确认SSH服务是否运行:`systemctlstatussshd`(CentOS)或`systemctlstatusssh`(Ubuntu),若未运行则启动`systemctlstartsshd`。(2)检查监听端口:`ss-tlnp|grepsshd`(或`netstat-tlnp|grepsshd`),确认监听在22端口(或自定义端口),且状态为`LISTEN`。(3)防火墙规则检查:使用`nftlistruleset`(nftables)或`iptables-L-n`查看是否有DROP/REJECT规则阻止22端口的入站连接。若有,添加允许规则(如`nftaddruleinetfilterinputtcpdport22accept`)。(4)客户端连接测试:在另一台机器使用`telnet目标IP22`或`nc-zv目标IP22`测试端口可达性,若失败可能是网络路由或防火墙问题。(5)查看SSH服务日志:`journalctl-usshd`(CentOS)或`journalctl-ussh`(Ubuntu),检查是否有认证失败、最大连接数限制(`MaxStartups`)或密钥错误(如`/etc/ssh/sshd_config`中`PubkeyAuthentication`是否启用)。(6)检查sshd配置文件`/etc/ssh/sshd_config`是否有错误:`sshd-t`测试配置语法,若报错需修正(如`PermitRootLogin`是否设置为`yes`/`no`,`Port`是否正确)。(7)SELinux/AppArmor状态:`sestatus`(SELinux)或`aa-status`(AppArmor),若为强制模式,可能因策略限制阻止SSH连接,可临时关闭测试(`setenforce0`)或调整策略。6.简述LVM(逻辑卷管理)的核心组件及扩容逻辑卷的完整步骤。假设当前有一个逻辑卷`/dev/vg0/lv_data`挂载在`/data`,需要将其扩容20GB(物理卷`/dev/sdb`有足够未分配空间)。LVM核心组件:PV(物理卷):底层物理磁盘或分区,通过`pvcreate`初始化为LVM可用。VG(卷组):多个PV的集合,提供逻辑卷的存储空间。LV(逻辑卷):从VG中划分的逻辑分区,可格式化后挂载使用。扩容步骤:(1)检查VG可用空间:`vgs`或`vgdisplayvg0`,确认`FreePE/Size`是否足够20GB(PE大小默认4MB,20GB需5120个PE)。(2)若VG空间不足,需扩展VG(若`/dev/sdb`有未分配空间):`pvcreate/dev/sdb2`(假设sdb2是未使用的分区)`vgextendvg0/dev/sdb2`(3)扩展LV:`lvextend-L+20G/dev/vg0/lv_data`(或`-l+5120`按PE数量扩展)。(4)检查文件系统类型并调整大小:若为ext4:`resize2fs/dev/vg0/lv_data`(需确保文件系统未挂载,或在线调整但需内核支持)。若为XFS:`xfs_growfs/data`(需已挂载,在线扩容)。(5)验证扩容结果:`df-h/data`查看可用空间是否增加。7.如何监控Linux系统的内存使用情况?当系统出现内存不足(OOM)时,如何定位导致问题的进程?监控工具包括:`free-h`:实时查看总内存、已用、空闲、交换空间。`top`/`htop`:按`M`键按内存占用排序,查看进程内存使用。`vmstat1`:观察`si`(交换入)和`so`(交换出)频率,高频率表示内存紧张。`pidstat-r1`:显示进程的内存使用统计(需安装sysstat)。OOM定位步骤:(1)查看内核日志:`dmesg|grep-i"oomkiller"`或`journalctl-b|grep-ioom`,日志会记录OOM时被终止的进程及候选进程的评分(oom_score)。(2)检查进程的oom_score_adj:`cat/proc/[PID]/oom_score_adj`,值越大越容易被OOMkiller选中(范围-1000到1000)。(3)分析内存泄漏:使用`valgrind--leak-check=full程序`(开发调试)或`pmap-x[PID]`查看进程内存映射,定位是否有未释放的内存块。(4)调整OOM行为:通过`echo-1000>/proc/[PID]/oom_adj`(旧方法)或`systemctlset-property服务名MemoryLow=100M`(systemd服务)降低进程被终止的优先级。8.请解释Linux内核中cgroup(控制组)的作用,并说明如何通过cgroup限制某个进程的CPU使用率不超过20%。cgroup(ControlGroups)是Linux内核的功能,用于限制、监控和管理一组进程的资源使用(CPU、内存、磁盘I/O、网络等),常用于容器(如Docker)和资源隔离场景。限制CPU使用率(假设使用cgroupv1):(1)加载cgroup模块(若未自动加载):`modprobecgroup`。(2)创建cgroup目录:`sudomkdir/sys/fs/cgroup/cpu/limit_cpu20`。(3)设置CPU配额:`cpu.cfs_period_us`定义周期(默认100000微秒=0.1秒),`cpu.cfs_quota_us`定义该周期内允许的运行时间。20%的CPU使用率即0.1秒内允许0.02秒运行,故设置:`echo100000>/sys/fs/cgroup/cpu/limit_cpu20/cpu.cfs_period_us``echo20000>/sys/fs/cgroup/cpu/limit_cpu20/cpu.cfs_quota_us`(4)将进程PID加入cgroup:`echo[PID]>/sys/fs/cgroup/cpu/limit_cpu20/tasks`。(5)验证:使用`top`观察该进程的CPU占用是否被限制在20%左右(注意多核系统需调整配额,如4核时20%需`cpu.cfs_quota_us=80000`)。9.如何优化Linux系统的I/O性能?请从文件系统选择、内核参数调整、硬件配置三个层面说明。文件系统选择:高并发小文件:Btrfs(支持子卷、写时复制)或XFS(元数据性能强)优于ext4。大文件存储:XFS(支持大文件,最大8EB)或ZFS(需内核模块,支持RAID-Z)。日志型工作负载:ext4(默认日志模式)或NTFS(通过ntfs-3g挂载)。内核参数调整:`vm.swappiness`(`sysctl-wvm.swappiness=10`):降低交换倾向(默认60),避免频繁换页。`vm.dirty_background_ratio`(`sysctl-wvm.dirty_background_ratio=5`):设置内存中脏页比例阈值,触发后台flush,减少大IO延迟。`blockdev--setra4096/dev/sda`:调整磁盘读取缓存大小(预读块数),匹配工作负载(大文件设大值,小文件设小值)。硬件配置:使用SSD替代HDD:减少机械延迟,提升随机I/O性能。磁盘阵列(RAID):RAID0(条带化,提升读写速度)、RAID10(镜像+条带,兼顾性能与冗余)。多路径(Multipath):针对SAN存储,通过`multipathd`实现链路冗余和负载均衡。10.当Linux系统启动时卡在“StartingLSB:Bringup/downnetworking”阶段,可

温馨提示

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

评论

0/150

提交评论