一套Linux面试模拟题及答案_第1页
一套Linux面试模拟题及答案_第2页
一套Linux面试模拟题及答案_第3页
一套Linux面试模拟题及答案_第4页
一套Linux面试模拟题及答案_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

一套Linux面试模拟题及答案1.如何查看当前系统内核版本?可使用`uname-r`命令直接输出内核版本信息,例如执行后返回"5.4.0-150-generic"表示当前内核版本为5.4.0。若需更详细的内核编译信息,可查看`/proc/version`文件内容,该文件包含内核版本、编译器版本及编译时间等信息。2.简述硬链接与软链接的区别,如何创建这两种链接?硬链接通过inode号指向原文件,与原文件共享数据块,删除原文件不影响硬链接的访问,且硬链接无法跨文件系统创建。软链接(符号链接)本质是一个特殊文件,存储原文件的路径,删除原文件后软链接会失效,可跨文件系统创建。创建硬链接使用`ln原文件硬链接名`,如`ln/data/file1/data/link1`;创建软链接使用`ln-s原文件软链接名`,如`ln-s/data/file1/data/link2`。3.如何统计/var/log目录下所有以"error"开头、扩展名为.log的文件中,包含"CRITICAL"关键字的行数?可通过组合`find`、`grep`和`wc`命令实现:`find/var/log-name"error.log"-execgrep"CRITICAL"{}\;|wc-l`其中`find`命令筛选目标文件,`-exec`参数对每个文件执行`grep"CRITICAL"`查找含有关键字的行,最后通过`wc-l`统计总行数。若需显示具体文件名及行数,可将`grep`改为`grep-c`并调整命令:`find/var/log-name"error.log"-execgrep-c"CRITICAL"{}\;`。4.系统突然无法登录,通过控制台发现启动时卡在"StartingApacheWebServer...",可能的原因及排查步骤?可能原因包括Apache配置文件语法错误、80/443端口被其他进程占用、Apache服务依赖的PHP/数据库服务未启动、磁盘空间不足导致无法写入日志等。排查步骤:(1)切换到单用户模式(如开机时按E键修改grub参数为`systemd.unit=rescue.target`),手动启动Apache并查看错误日志:`systemctlstartapache2`(或httpd,依发行版而定),通过`journalctl-uapache2`查看详细错误;(2)检查配置文件语法:`apache2ctlconfigtest`(或`httpd-t`),若提示"SyntaxOK"则配置正常,否则定位具体错误行;(3)使用`ss-tanlp|grep:80`或`netstat-anp|grep:80`检查端口占用情况,杀死冲突进程;(4)检查`/var/log/apache2/error.log`(或对应路径)是否有磁盘空间不足的报错,通过`df-h`确认根分区剩余空间。5.如何将用户"testuser"添加到组"developers"中?若需同时创建用户家目录(默认路径)并设置其默认shell为/bin/bash,应使用什么命令?添加用户到现有组使用`usermod-aGdeveloperstestuser`(-a表示追加,避免覆盖原有组)。创建用户并指定家目录及shell的命令为:`useradd-m-s/bin/bashtestuser`(-m自动创建家目录,-s指定shell)。若家目录需自定义路径(如/home/test),可使用`useradd-m-d/home/test-s/bin/bashtestuser`。6.简述Linux文件权限的三位八进制表示法(如644)对应的具体权限,如何将文件"app.log"的权限修改为所有者读写、组用户只读、其他用户无权限?三位八进制分别对应所有者(u)、组(g)、其他用户(o)的权限,每一位由r(读,4)、w(写,2)、x(执行,1)的数值和组成。例如644表示u=rw(4+2=6),g=r(4),o=r(4)?不,644实际是u=rw(6),g=r(4),o=r(4)?错误,正确应为644:u=rw(6),g=r(4),o=r(4)?不,644的第三位是其他用户权限,应为o=r(4)。正确的对应是:6(u:rw)、4(g:r)、4(o:r)。目标权限要求所有者读写(u=rw=6)、组只读(g=r=4)、其他无权限(o==0),因此目标权限为640。修改命令为`chmod640app.log`,或使用符号模式`chmodu=rw,g=r,o=app.log`。7.如何监控某个进程(如MySQL)的CPU和内存使用情况,要求实时更新且显示进程子线程?可使用`top`命令,启动后按"P"键按CPU使用率排序,按"M"键按内存使用率排序。若需查看子线程,在`top`界面输入"H"(切换线程显示模式),此时会列出所有线程。更推荐使用`htop`(需先安装),其交互界面更友好,支持鼠标操作,默认显示线程(可通过配置关闭),且能直观展示CPU、内存、交换空间的使用情况。此外,`ps-mp<PID>-oTHREAD,tid,time`可查看指定进程(PID)的所有线程信息。8.系统根分区(/)空间不足,如何快速定位大文件或目录?可通过以下步骤排查:(1)使用`df-h`确认根分区使用情况,确定是/分区空间不足;(2)进入根目录`cd/`,使用`du-sh`查看各一级目录的大致占用空间,找到占用最大的目录(如/var、/home等);(3)进入目标目录(如/var),再次执行`du-sh`缩小范围,例如发现/var/log占用较大;(4)进入/var/log后,使用`du-h--max-depth=1`查看子目录占用,或使用`ls-lht`按文件大小排序,找到大日志文件(如nginx.access.log.1.gz);(5)若需更精确分析,可使用`ncdu`(需安装)交互式工具,直观展示目录树状结构及文件大小。9.编写一个Shell脚本,实现以下功能:接收一个目录路径作为参数,统计该目录下(含子目录)所有普通文件(非目录、符号链接等)的数量,并输出结果。脚本示例:```bash!/bin/bash检查参数是否存在if[$-ne1];thenecho"错误:请提供一个目录路径作为参数"exit1fitarget_dir="$1"检查路径是否存在且为目录if[!-d"$target_dir"];thenecho"错误:$target_dir不是有效的目录"exit1fi使用find命令查找普通文件并统计数量file_count=$(find"$target_dir"-typef|wc-l)echo"目录$target_dir下共有$file_count个普通文件"```说明:`find"$target_dir"-typef`会递归查找目标目录下所有类型为普通文件(-typef)的文件,输出每行一个文件路径;`wc-l`统计行数即文件数量。10.如何临时禁用SELinux?如何永久关闭SELinux?临时禁用(无需重启):执行`setenforce0`,此时SELinux状态变为Permissive(仅记录警告不强制限制)。可通过`getenforce`查看当前状态。永久关闭:编辑`/etc/selinux/config`文件,将`SELINUX=enforcing`修改为`SELINUX=disabled`,保存后重启系统生效。注意:修改配置文件后需重启才能彻底关闭,仅`setenforce0`是临时生效。11.简述crontab任务的时间格式,编写一个每周一至周五(工作日)的早上8点30分执行"/usr/local/backup.sh"脚本的定时任务。crontab时间格式为五个字段,依次表示分钟(0-59)、小时(0-23)、日期(1-31)、月份(1-12)、星期(0-6,0=周日),字段间用空格分隔,支持通配符()、范围(-)、间隔(/)。目标任务的时间字段为:3081-5(1-5表示周一至周五),完整crontab条目为:`3081-5/usr/local/backup.sh`若需将输出重定向到日志文件,可添加`>>/var/log/backup.log2>&1`。12.如何查看当前系统开放的TCP端口及对应的监听进程?可使用`ss`命令(更高效)或`netstat`命令:(1)`ss-tanlp`:-t表示TCP,-a表示所有状态,-n表示显示数字地址/端口,-l表示监听状态,-p表示显示进程信息。输出示例中"LISTEN"状态的行即为监听端口,如`:80`对应HTTP服务。(2)`netstat-tanlp`:参数含义与ss类似,适用于未安装ss的旧系统。若需筛选特定端口(如80),可添加`grep:80`,例如`ss-tanlp|grep:80`。13.系统启动时提示"FailedtostartLVM2metadatadaemon",可能的原因及解决方法?可能原因:LVM元数据损坏、逻辑卷配置错误、lvm2服务相关文件丢失或权限错误。解决步骤:(1)检查LVM相关服务状态:`systemctlstatuslvm2-lvmetad.service`,查看错误日志;(2)尝试重新启动服务:`systemctlrestartlvm2-lvmetad.service`;(3)若失败,检查LVM元数据是否损坏:使用`vgs`、`pvs`、`lvs`命令查看卷组、物理卷、逻辑卷状态,若提示"unabletoreadmetadata",可能需要修复元数据(如`vgcfgrestore`恢复卷组配置);(4)检查`/etc/lvm/lvm.conf`配置文件是否有语法错误,可使用`lvmconfig--check`验证;(5)若服务文件丢失,重新安装lvm2包:`yumreinstalllvm2`(RHEL系)或`aptreinstalllvm2`(Debian系)。14.如何将一个3TB的磁盘格式化为ext4文件系统?若该磁盘为新磁盘,需要先做什么操作?步骤如下:(1)分区:3TB磁盘若使用MBR分区表最多支持2TB,因此需使用GPT分区表。使用`parted`工具分区:`parted/dev/sdb`(假设磁盘为sdb)`mklabelgpt`(创建GPT标签)`mkpartprimaryext40%100%`(创建主分区,占满整个磁盘)`quit`退出parted。(2)格式化分区:`mkfs.ext4/dev/sdb1`(sdb1为分区名)。注意:若磁盘已存在分区,需先删除原有分区(`parted`的`rm`命令)或使用`fdisk`(但fdisk不支持GPT,大磁盘必须用parted或gdisk)。15.简述环境变量`PATH`的作用,如何临时设置一个环境变量?如何永久生效?`PATH`变量定义了系统查找可执行文件的路径列表,多个路径用冒号分隔。当用户执行命令(如`ls`)时,系统会按`PATH`中的顺序搜索对应名称的可执行文件。临时设置:在终端输入`exportVAR_NAME=value`,仅当前终端会话有效。例如`exportMY_PATH=/usr/local/bin:$PATH`将/usr/local/bin添加到PATH前端。永久生效(用户级别):编辑用户家目录下的`.bashrc`或`.bash_profile`文件,添加`exportVAR_NAME=value`,保存后执行`source~/.bashrc`使其立即生效。全局生效(所有用户):编辑`/etc/profile`或`/etc/bash.bashrc`(依发行版),添加环境变量定义,重启或`source`后生效。16.如何排查SSH连接超时问题?假设服务器能ping通但无法SSH登录。排查步骤:(1)检查SSH服务是否运行:`systemctlstatussshd`(RHEL系)或`systemctlstatusssh`(Debian系),若未运行则启动服务;(2)查看SSH日志:`journalctl-usshd`(或`/var/log/auth.log`),检查是否有认证失败、连接被拒绝的记录(如"Connectionclosedby...");(3)检查防火墙规则:使用`firewall-cmd--list-ports`(RHEL系)或`iptables-L-n`查看是否开放了22端口(SSH默认端口),若未开放则添加规则(如`firewall-cmd--add-port=22/tcp--permanent`);(4)检查SSH配置文件`/etc/ssh/sshd_config`,确认`Port22`未被注释,`PermitRootLogin`(是否允许root登录)、`AllowUsers`(允许的用户列表)等参数配置正确,修改后需`systemctlreloadsshd`生效;(5)若使用密钥登录,检查客户端公钥是否已添加到服务器的`~/.ssh/authorized_keys`文件,权限是否正确(.ssh目录权限700,authorized_keys权限600);(6)检查服务器是否启用了TCPwrappers(`/etc/hosts.allow`和`/etc/hosts.deny`),是否有规则阻止了当前IP的连接。17.编写一个Shell脚本,实现以下功能:遍历当前目录下所有扩展名为".txt"的文件,将每个文件的前5行复制到对应的".bak"文件中(如file.txt提供file.txt.bak)。脚本示例:```bash!/bin/bash遍历当前目录下所有.txt文件forfilein.txt;do检查文件是否存在(避免无匹配时的通配符扩展)if[-f"$file"];then提取前5行并输出到.bak文件head-n5"$file">"${file}.bak"echo"已创建备份:${file}.bak"fidone```说明:`forfilein.txt`遍历当前目录下所有.txt文件,`-f`判断是否为普通文件(避免处理目录),`head-n5`提取前5行,`"${file}.bak"`构造备份文件名(如file.txt提供file.txt.bak)。18.如何查看系统最近7天的登录日志?如何定位某个用户(如"admin")的登录记录?系统登录日志通常存储在`/var/log/auth.log`(Debian系)或`/var/log/secure`(RHEL系)。查看最近7天的日志可使用`grep`结合日期范围,或使用`journalctl`(支持时间过滤)。方法一(使用journalctl):`journalctl-usshd--since"7daysago"--nor`(筛选sshd服务最近7天的日志)。方法二(直接查看日志文件):`grep"sshd"/var/log/auth.log|grep-E"$(date-d'7daysago'+'%b%d')|$(date+'%b%d')"--color`(通过日期字符串筛选,需注意日志中的日期格式为"月日"如"Oct05")。定位用户"admin"的登录记录:`grep"admin"/var/log/auth.log|grep"Accepted"`("Accepted"表示登录成功,"Failed"表示失败),或`journalctl-usshd-tsshd|grep"admin"|grep"Accepted"`。19.简述Linux进程的五种状态(如R、S、D、Z、T),如何识别僵尸进程(ZombieProcess)并清理?进程状态:R(Running/Runnable):运行中或在运行队列中等待;S(Sleeping):可中断睡眠(等待事件完成,如IO);D(DiskSleep):不可中断睡眠(通常等待磁盘IO,无法被信号终止);Z(Zombie):僵尸进程(已终止但父进程未回收其资源);T(Stopped):暂停(被SIGSTOP信号停止,或调试中)。识别僵尸进程:使用`psaux`查看,状态列为Z的进程即为僵尸进程。例如输出中"Z+"表示僵尸进程(+表示在前台进程组)。清理方法:僵尸进程的父进程若存活,可发送SIGCHLD信号通知其回收(通常父进程会自动处理);若父进程已死亡(变成孤儿进程),其init进程(PID1)会接管并回收。若父进程持续不回收(如编写错误的程序),需终止父进程:找到父进程PID(`ps-oppid=<僵尸进程PID>`),执行`kill<父进程PID>`,父进程终止后init会回收僵尸进程。20.如何将一个逻辑卷(LV)的大小从20GB扩展至30GB?假设卷组(VG)有足够的空闲空间。扩展步骤(以ext4文件系统为例):(1)确认卷组空闲空间:`vgs`查看VG的FreePE大小,需确保至少有10GB可用(根据PE大小计算,如PE=4MB,需2560个PE);(2)扩展逻辑卷:`lvextend-L+10G/dev/vg_name/lv_name`(将LV增大10G,总大小变为30G)或`lvextend-L30G/dev/vg_name/lv_name`(直接设置为30G);(3)检查文件系统是否支持在线扩展(ext4支持),执行`resize2fs/dev/vg_name/lv_name`调整文件系统大小;(4)验证扩展结果:`df-h`查看LV挂载点的可用空间是否增加。注意:若文件系统为XFS,扩展命令为`xfs_growfs/挂载点`(需先挂载),且XFS不支持缩小操作。21.如何限制用户"devuser"的CPU使用率不超过30%?可使用cgroups(ControlGroups)实现资源限制。步骤如下:(1)安装cgroup工具(如cgroup-tools):`aptinstallcgroup-tools`(Debian系)或`yuminstalllibcgroup`(RHEL系);(2)创建cgroup目录(或使用systemd的cgroup管理):`cgcreate-gcpu:devuser_group`(创建名为devuser_group的cpu子系统cgroup);(3)设置CPU限制:`cgset-rcpu.cfs_quota_us=30000devuser_group`(cpu.cfs_period_us默认100000微秒,30000表示30%的CPU时间);(4)将用户的进程加入cgroup:`cgclassify-gcpu:devuser_group$(pgrep-udevuser)`(将devuser的所有进程加入cgroup);(5)若需开机自动生效,可编辑`/etc/cgconfig.conf`配置文件,或使用systemd的.slice文件(如创建`devuser.slice`并设置CPUQuota=30%)。22.简述NFS客户端挂载NFS共享目录的命令及常用参数,如何实现开机自动挂载?挂载命令:`mount-tnfs服务器IP:共享路径本地挂载点[选项]`。常用参数:`-orw`:读写权限(默认);`-oro`:只读;`-ohard`:硬挂载(挂载失败时持续重试);`-osoft`:软挂载(超时后返回错误);`-onoatime`:不更新文件访问时间(提升性能);`-overs=4`:指定NFS版本(如NFSv4)。示例:`mount-tnfs-overs=4,noatime00:/data/share/mnt/nfs`。开机自动挂载:编辑`/etc/fstab`文件,添加一行:`00:/data/share/mnt/nfsnfsvers=4,noatime00`保存后使用`mount-a`验证是否可成功挂载。23.如何查看系统中所有已安装的RPM包?如何查找包含"httpd"关键字的已安装包?查看所有已安装RPM包:`rpm-qa`(输出所有包名),或`rpm-qa|less`分页查看。查找含"httpd"的包:`rpm-qa|grephttpd`。若需更精确(如包名精确匹配),使用`rpm-qhttpd`(仅当httpd已安装时返回包信息,否则提示未安装)。若需查看包的详细信息(如版本、依赖),使用`rpm-qihttpd`(i表示信息);查看包安装的文件列表使用`rpm-

温馨提示

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

评论

0/150

提交评论