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

付费下载

下载本文档

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

文档简介

linux面试题及答案100基础知识题(20分)在Linux系统中,以下哪个命令用于查看当前目录下的文件和子目录列表?A.lsB.dirC.listD.showLinux系统中,哪个命令用于查找文件?A.searchB.findC.locateD.whereis在Linux系统中,哪个命令用于查看文件内容?A.viewB.showC.catD.displayLinux系统中,哪个命令用于创建新的目录?A.newdirB.mkdirC.createdirD.makedir系统管理题(25分)请解释Linux系统中/etc/passwd文件的结构和作用,并说明如何添加一个新用户。在Linux系统中,如何管理进程?请详细说明常用的进程管理命令及其用法,并解释前台进程和后台进程的区别。网络配置题(20分)在Linux系统中,如何配置静态IP地址?请以Ubuntu系统为例,详细说明配置步骤。解释Linux系统中的防火墙工具iptables和firewalld的区别,并说明如何使用firewalld开放一个特定的端口。Shell脚本题(20分)编写一个Shell脚本,该脚本能够接收一个目录路径作为参数,并列出该目录下所有大于10MB的文件。编写一个Shell脚本,该脚本能够监控系统的CPU使用率,并在CPU使用率超过80%时发送邮件通知管理员。故障排除题(15分)在Linux系统中,如果系统突然变得非常缓慢,请描述你的故障排除步骤,包括可能的原因和相应的解决方案。标准答案及解析基础知识题(20分)1.A解析:ls是Linux系统中用于列出当前目录下文件和子目录的基本命令。dir命令在某些Linux发行版中可能可用,但它是ls命令的别名,不是原始命令。list和show不是Linux中的标准命令。ls命令可以配合多种参数使用,如-l(长格式显示)、-a(显示隐藏文件)等。2.B解析:find是Linux系统中用于查找文件的标准命令。它可以根据文件名、文件类型、文件大小、修改时间等多种条件进行查找。search不是Linux中的标准命令。locate命令用于快速查找文件,但它依赖于一个预先构建的数据库,可能不是最新的。whereis命令用于查找二进制文件、源代码文件和手册页的位置。3.C解析:cat命令是Linux系统中用于查看文件内容的基本命令。它可以将文件内容输出到标准输出(通常是终端)。view命令通常用于打开vim编辑器进入查看模式。show和display不是Linux中的标准命令。对于大文件,使用cat可能会导致终端输出过多,可以使用more或less命令进行分页查看。4.B解析:mkdir是Linux系统中用于创建新目录的标准命令。例如,mkdirnewdir会在当前目录下创建一个名为newdir的新目录。newdir、createdir和makedir都不是Linux中的标准命令。mkdir命令可以配合-p参数使用,用于创建多级目录结构,如mkdir-pparent/child。系统管理题(25分)1.答案:/etc/passwd文件是Linux系统中用于存储用户账户信息的重要文件。它是一个文本文件,每一行代表一个用户账户,包含以下7个字段,用冒号(:)分隔:1.用户名:用户的登录名称2.密码:在早期版本中存储加密后的密码,现在通常显示为x,表示密码存储在/etc/shadow文件中3.用户ID(UID):用户的唯一标识号4.组ID(GID):用户所属主组的标识号5.注释字段:通常包含用户的全名或其他描述信息6.用户主目录:用户登录后默认进入的目录7.登录shell:用户登录后使用的默认shell例如,一个典型的/etc/passwd条目可能如下:```root:x:0:0:root:/root:/bin/bash```要添加一个新用户,可以使用以下方法之一:1.使用useradd命令:```sudouseradd-m-s/bin/bashusername```其中,-m选项表示创建用户主目录,-s选项指定默认shell,username是新用户名。2.使用adduser命令(useradd的交互式版本):```sudoadduserusername```这将提示您输入用户的各种信息,包括密码。3.使用usermod命令修改已存在的用户:```sudousermod-lnewusernameoldusername```这将重命名用户账户。添加用户后,通常需要为新用户设置密码:```sudopasswdusername```此外,还可以使用userdel命令删除用户:```sudouserdelusername```如果要同时删除用户的主目录,可以使用-r选项:```sudouserdel-rusername```解析:/etc/passwd文件是Linux系统中最基本的用户配置文件之一。在早期版本中,密码直接存储在这个文件中,但由于安全性考虑,现代Linux系统将密码信息移至/etc/shadow文件中,只有root用户可以访问。添加新用户时,useradd和adduser是常用的命令,但它们的工作方式略有不同:useradd是非交互式的,适合脚本使用;而adduser是交互式的,更适合手动操作。在实际工作中,还需要考虑用户组的创建、权限设置、资源限制等高级主题。2.答案:在Linux系统中,进程是正在执行的程序的实例。进程管理是系统管理的重要部分,以下是一些常用的进程管理命令及其用法:1.ps命令:显示当前运行的进程```ps-ef显示所有进程的详细信息psaux显示所有进程,包括用户信息ps-ef|grepnginx查找特定进程(如nginx)```2.top命令:动态显示系统中运行的进程和系统资源使用情况```top启动top界面top-uusername只显示特定用户的进程```在top界面中,可以使用以下键进行交互操作:-P:按CPU使用率排序-M:按内存使用率排序-k:终止进程-q:退出top3.htop命令:top的增强版,提供更友好的界面和更多功能```htop启动htop界面```4.pgrep命令:根据名称和其他属性查找进程ID```pgrepnginx查找nginx进程的PIDpgrep-uusername查找特定用户的进程```5.kill命令:终止进程```killPID正常终止进程kill-9PID强制终止进程(不推荐使用,除非必要)```6.pkill命令:根据名称和其他属性终止进程```pkillnginx终止所有nginx进程pkill-uusername终止特定用户的所有进程```7.nice和renice命令:调整进程的优先级```nice-n10command以较低优先级运行命令(值越高优先级越低)renice10PID修改已运行进程的优先级```8.nohup命令:使进程在用户退出后继续运行```nohupcommand&运行命令并在后台持续运行,即使终端关闭```前台进程和后台进程的区别:1.前台进程:-直接在终端中运行,占用终端界面-可以与用户交互,接收输入-当进程运行时,终端无法执行其他命令-例如:运行vi编辑器或top命令2.后台进程:-在后台运行,不占用终端界面-不直接与用户交互-终端可以用于执行其他命令-使用&符号将命令放入后台运行-例如:nohupcommand&或sleep60&进程状态:Linux进程有多种状态,常见的包括:-R(运行):正在运行或在运行队列中-S(睡眠):可中断的睡眠状态-D(不可中断睡眠):不可中断的睡眠状态-Z(僵尸):已终止但父进程未读取的进程-T(停止):已停止的进程解析:进程管理是Linux系统管理的核心内容之一。在实际工作中,经常需要查看系统中的进程状态、找出占用资源过多的进程、终止无响应的进程等。ps和top是最常用的进程查看工具,前者提供静态快照,后者提供动态视图。kill和pkill用于终止进程,但应尽量使用温和的方式(如不带-9参数的kill),避免强制终止可能导致的数据问题。nice和renice用于调整进程优先级,这在资源紧张时非常有用。前台和后台进程的区别在于它们是否占用终端界面,理解这一点对于高效使用Linux命令行至关重要。在实际应用中,还可能需要考虑进程的优先级、亲和性、控制组(cgroups)等高级特性。网络配置题(20分)1.答案:在Ubuntu系统中,配置静态IP地址可以通过修改Netplan配置文件来实现。以下是详细的步骤:1.首先,确定当前系统的网络接口名称:```ipaddrshow```或者```ipa```这将显示所有网络接口及其名称,通常以太网接口为ens33、ens160等,无线接口为wlan0等。2.找到Netplan配置文件。这些文件通常位于/etc/netplan/目录下,并命名为.yaml文件。例如:```ls/etc/netplan/```可能会看到类似50-cloud-init.yaml或01-network-manager.yaml的文件。3.备份原始配置文件(这是一个好习惯):```sudocp/etc/netplan/50-cloud-init.yaml/etc/netplan/50-cloud-init.yaml.bak```4.编辑Netplan配置文件。使用你喜欢的文本编辑器,例如nano:```sudonano/etc/netplan/50-cloud-init.yaml```5.修改配置文件内容,添加静态IP地址配置。以下是一个示例配置:```yamlnetwork:version:2ethernets:ens33:替换为你的实际网络接口名称dhcp4:noaddresses:-00/24替换为你的静态IP地址和子网掩码gateway4:替换为你的网关地址nameservers:addresses:[,]替换为你的DNS服务器```6.保存并关闭文件。在nano编辑器中,按Ctrl+O保存,然后按Enter确认,最后按Ctrl+X退出。7.应用新的网络配置:```sudonetplanapply```8.验证配置是否生效:```ipaddrshowens33替换为你的实际网络接口名称```或者```ping```检查是否能正常访问互联网。注意事项:-确保配置的IP地址不在DHCP服务器的分配范围内,以避免IP地址冲突-子网掩码中的"/24"表示,"/16"表示,依此类推-如果系统使用NetworkManager而不是Netplan,配置方法会有所不同,需要修改NetworkManager的配置文件或使用nm-connection-editor工具解析:配置静态IP地址是Linux系统管理的基本技能之一。Ubuntu系统近年来从传统的ifupdown配置方式转向了Netplan,这是一种更现代的网络配置管理工具。Netplan使用YAML格式的配置文件,语法清晰且易于理解。在实际工作中,需要注意不同Linux发行版可能使用不同的网络配置工具,如RHEL/CentOS使用NetworkScripts,而Ubuntu使用Netplan。此外,在生产环境中配置网络时,还应考虑网络冗余、负载均衡、安全策略等高级主题。2.答案:iptables和firewalld都是Linux系统中用于管理防火墙规则的工具,但它们在设计理念、使用方式和功能特点上有显著区别:iptables:-是Linux内核中Netfilter用户空间的工具,已存在多年-基于规则的防火墙,使用链(chains)和表(tables)的概念-配置是静态的,修改后需要保存和重新加载规则-规则按顺序匹配,一旦匹配即停止继续检查-语法复杂,学习曲线较陡峭-在大多数Linux发行版中默认安装firewalld:-是较新的防火墙管理工具,作为systemd服务运行-使用区域(zones)和服务的概念,而不是链和表-支持动态更新规则,无需重启防火墙服务-提供更友好的命令行界面和图形界面-基于D-Bus通信,与systemd集成更好-在RHEL/CentOS7+、Fedora等发行版中默认使用使用firewalld开放特定端口的步骤:1.检查firewalld服务状态:```sudosystemctlstatusfirewalld```如果未运行,可以启动它:```sudosystemctlstartfirewalld```并设置为开机自启:```sudosystemctlenablefirewalld```2.查看当前活动的区域:```sudofirewall-cmd--get-active-zones```3.查看默认区域:```sudofirewall-cmd--get-default-zone```4.添加端口到特定区域(例如public区域):```sudofirewall-cmd--zone=public--add-port=8080/tcp--permanent```其中:--zone=public:指定区域--add-port=8080/tcp:添加TCP端口8080--permanent:永久添加规则,重启后仍然有效5.重新加载防火墙规则使更改生效:```sudofirewall-cmd--reload```6.验证端口是否已开放:```sudofirewall-cmd--zone=public--list-ports```应该显示8080/tcp7.检查端口是否正在监听:```sudoss-tulpn|grep8080```8.如果需要,可以添加服务而不仅仅是端口。firewalld预定义了许多服务,如http、https、ssh等:```sudofirewall-cmd--zone=public--add-service=http--permanentsudofirewall-cmd--reload```解析:iptables和firewalld是Linux系统中两种主要的防火墙管理工具。iptables是传统的工具,功能强大但配置复杂;firewalld是较新的工具,提供了更友好的接口和更动态的管理方式。在实际工作中,选择哪种工具取决于具体的Linux发行版和需求。例如,RHEL/CentOS7+默认使用firewalld,而一些轻量级发行版可能仍然使用iptables。firewalld的区域和服务概念简化了网络管理,特别是对于复杂的网络环境。理解这两种工具的工作原理和区别,对于Linux系统管理员来说是非常重要的技能。在实际配置防火墙时,还需要考虑安全性原则,遵循最小权限原则,只开放必要的端口和服务。Shell脚本题(20分)1.答案:以下是一个Shell脚本,它可以接收一个目录路径作为参数,并列出该目录下所有大于10MB的文件:```bash!/bin/bash检查是否提供了目录参数if[$-eq0];thenecho"错误:请提供一个目录路径作为参数"echo"用法:$0<目录路径>"exit1fi检查提供的参数是否是一个有效的目录if[!-d"$1"];thenecho"错误:'$1'不是一个有效的目录"exit1fi获取目录路径dir_path="$1"列出大于10MB的文件echo"目录'$dir_path'中大于10MB的文件:"echo"---------------------------------"使用find命令查找大于10MB的文件find"$dir_path"-typef-size+10M如果没有找到任何文件,显示提示信息if[$?-ne0];thenecho"没有找到大于10MB的文件"fiecho"---------------------------------"echo"查找完成"```使用说明:1.将上述脚本保存为文件,例如find_large_files.sh2.给脚本添加执行权限:```chmod+xfind_large_files.sh```3.运行脚本,并提供目录路径作为参数:```./find_large_files.sh/path/to/directory```脚本功能说明:-检查是否提供了目录参数-验证提供的参数是否是一个有效的目录-使用find命令查找大于10MB的文件-显示查找结果-如果没有找到任何文件,显示提示信息解析:这个脚本展示了Shell脚本的基本结构,包括参数检查、条件判断、命令组合等。find命令是Linux中强大的文件查找工具,-size参数可以用来根据文件大小进行筛选。+10M表示大于10MB,-10M表示小于10MB,10M表示正好等于10MB。在实际工作中,可能需要考虑递归查找子目录(默认行为)、处理特殊字符的文件名、添加更多过滤条件等。此外,脚本中的错误处理也很重要,可以防止因无效输入导致的脚本失败。在生产环境中,可能还需要添加日志记录功能,以便追踪脚本的执行情况。2.答案:以下是一个Shell脚本,它可以监控系统的CPU使用率,并在CPU使用率超过80%时发送邮件通知管理员:```bash!/bin/bash配置部分ADMIN_EMAIL="admin@"管理员邮箱THRESHOLD=80CPU使用率阈值(百分比)LOG_FILE="/var/log/cpu_monitor.log"日志文件路径TEMP_FILE="/tmp/cpu_usage.tmp"临时文件检查必要的工具是否存在command-vmail>/dev/null2>&1||{echo"错误:mail命令未安装";exit1;}command-vbc>/dev/null2>&1||{echo"错误:bc命令未安装";exit1;}创建日志目录(如果不存在)mkdir-p"$(dirname"$LOG_FILE")"记录日志函数log(){echo"$(date'+%Y-%m-%d%H:%M:%S')-$1">>"$LOG_FILE"}发送邮件函数send_alert(){localcpu_usage=$1localsubject="CPU使用率警告:${cpu_usage}%"localbody="警告:系统CPU使用率已达到${cpu_usage}%,超过阈值${THRESHOLD}%。"echo"$body"|mail-s"$subject""$ADMIN_EMAIL"log"已发送CPU使用率警告邮件,当前CPU使用率:${cpu_usage}%"}获取CPU使用率get_cpu_usage(){使用top命令获取CPU使用率localcpu_usage=$(top-bn1|grep"Cpu(s)"|sed"s/.,\([0-9.]\)%id./\1/"|awk'{print100-$1}')或者使用/proc/stat计算CPU使用率localcpu_usage=$(grep'cpu'/proc/stat|awk'{usage=($2+$4)100/($2+$4+$5)}END{printusage}')echo"$cpu_usage"}主循环whiletrue;docpu_usage=$(get_cpu_usage)检查CPU使用率是否超过阈值if(($(echo"$cpu_usage>$THRESHOLD"|bc-l)));thenlog"CPU使用率过高:${cpu_usage}%"send_alert"$cpu_usage"elselog"CPU使用率正常:${cpu_usage}%"fi等待60秒后再次检查sleep60done```使用说明:1.将上述脚本保存为文件,例如cpu_monitor.sh2.给脚本添加执行权限:```chmod+xcpu_monitor.sh```3.修改脚本中的配置部分,特别是管理员邮箱地址4.运行脚本:```./cpu_monitor.sh```注意:建议在后台运行脚本,可以使用nohup命令:```nohup./cpu_monitor.sh&```5.要停止脚本,可以使用pkill命令:```pkill-fcpu_monitor.sh```脚本功能说明:-监控CPU使用率,每60秒检查一次-当CPU使用率超过80%时,发送邮件通知管理员-记录日志到/var/log/cpu_monitor.log文件-检查必要的工具(mail和bc)是否存在-提供了两种获取CPU使用率的方法(top命令和/proc/stat)解析:这个脚本展示了Shell脚本的高级功能,包括函数定义、循环结构、条件判断、外部命令调用等。在实际工作中,系统监控脚本需要考虑很多因素,如性能影响、日志管理、告警频率控制等。脚本中的两种CPU使用率获取方法各有优缺点:top命令简单直观,但可能受系统负载影响;/proc/stat方法更底层,但计算稍微复杂。在生产环境中,可能还需要考虑将脚本作为系统服务运行,添加启动/停止功能,集成到现有的监控系统中等。此外,邮件发送功能依赖于系统的邮件配置,可能需要额外配置SMTP服务器或使用第三方邮件服务。故障排除题(15分)答案:当Linux系统突然变得非常缓慢时,系统管理员需要采取系统化的方法来诊断和解决问题。以下是详细的故障排除步骤:第一步:初步观察和基本信息收集1.登录系统并观察系统响应-尝试执行简单命令(如ls、pwd)检查系统响应-观察命令提示符是否立即返回或存在延迟2.收集系统基本信息```uname-a查看内核版本和系统信息uptime查看系统负载date检查系统时间是否正确```第二步:检查系统资源使用情况1.检查CPU使用率```top查看进程CPU使用情况htop更友好的进程查看工具vmstat15每1秒报告一次,共5次,查看CPU、内存、I/O使用情况```可能的原因:-某个或某些进程占用大量CPU资源-系统负载过高(进程数超过CPU核心数)-高I/O等待导致CPU空闲2.检查内存使用情况```free-h查看内存使用情况psaux--sort=-%mem|head-n11查看内存使用最高的进程```可能的原因:-内存不足,系统频繁使用交换空间-内存泄漏(某个进程持续占用内存不释放)-缓冲区和缓存占用过多内存3.检查磁盘I/O情况```iostat-xz15查看磁盘I/O统计df-h查看磁盘空间使用情况```可能的原因:-磁盘空间不足-磁盘故障或坏道-某个进程频繁读写磁盘第三步:检查网络活动```netstat-an|grepESTABLISHED|wc-l查看活跃连接数ss-tulnp查听端口和连接```可能的原因:-大量网络连接导致资源消耗-DDoS攻击或异常网络流量-网络配置问题导致网络延迟第四步:检查系统日志```journalctl-n100-perr查看最近的错误日志dmesg|tail-n50查看内核消息```可能的原因:-硬件错误(内存、磁盘等)-驱动程序问题-系统服务异常第五步:检查进程状态```psaux--sort=-%cpu|head-n11查看CPU使用最高的进程psaux--sort=-%mem|head-n11查看内存使用最高的进程psaux|D查看所有进程,包括僵尸进程```可能的原因:-某个

温馨提示

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

评论

0/150

提交评论