Linux运维工程师面试题第一套

简介:

1)Linux启动大致过程?

加载BIOS–>读取MBR–>Boot Loader–>加载内核–>用户层init依据inittab文件来设定系统运行的等级(一般3或者5,3是多用户命令行,5是界面)–>init进程执行rc.syninit–>启动内核模块–>执行不同级别运行的脚本程序–>执行/etc/rc.d/rc.local(本地运行服务)–>执行/bin/login,就可以登录了。

【评析】基本看过《鸟哥私房菜》的目录就能知道,这是第五章管理员的第一个内容。这道题可以扩展一下:init系统运行等级一共有几种,每一种都是什么?

0:关机,只要是0就不能开机   

1:单用户模式,不能被远程登陆

2:多用户不能上网模式    

3:多用户可以上网模式    

4:未使用   

5:有图形的linux  

6:重启,只要是6就会不断的重启,子子孙孙无穷匮焉的重启


2)Linux系统是由那些部分组成?
Linux系统内核,shell,文件系统和应用程序四部分组成。


3)apache有几种工作模式,分别简述两种工作模式及其优缺点?

apache主要有两种工作模式:prefork(apache的默认安装模式)和worker(可以在编译的时候添加--with-mpm=worker选项)

prefork的特点是:(预派生)

1.这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销

2.可以防止意外的内存泄漏

3.在服务器负载下降的时候会自动减少子进程数

worker的特点是:支持混合的多线程多进程的多路处理模块

如果对于一个高流量的HTTP服务器,worker MPM是一个比较好的选择,因为worker MPM占用的内存要比prefork要小。

【评析】我没有怎么深入的接触apache,我是半路出家,接触的是nignx,于是这道题就那么回事吧。


4)LVS三种模式的工作过程?

NAT (Network Address Translation)模式。LB收到用户请求包后,LB将请求包中虚拟服务器的IP地址转换为某个选定RS的IP地址,转发给RS;RS将应答包发给 LB,LB将应答包中RS的IP转为虚拟服务器的IP地址,回送给用户。

IP隧道 (IP Tunneling)模式。LB收到用户请求包后,根据IP隧道协议封装该包,然后传给某个选定的RS;RS解出请求信息,直接将应答内容传给用户。此时要求RS和LB都要支持IP隧道协议。

DR(Direct Routing)模式。LB收到请求包后,将请求包中目标MAC地址转换为某个选定RS的MAC地址后将包转发出去,RS收到请求包后 ,可直接将应答内容传给用户。此时要求LB和所有RS都必须在一个物理段内,且LB与RS群共享一个虚拟IP。

【评析】LVS就是Linux Virtual Server,linux虚拟服务器,这道题要是不明白就记下来,详细内容可以看看http://www.it165.net/admin/html/201401/2248.html  和 http://edu.51cto.com/course/course_id-5787.html?edu_recommend_adid=99


5)列出linux常见打包工具并写相应解压缩参数(至少三种)?

这个没啥说的,tar命令就是打包工具,对应的解压缩参数 tar -cvf、 tar -zcvf、 tar -jcvf是对应拆包解压什么文件的要对应记住,不要记混。


6)一个EXT3的文件分区,当用touch新建文件时报错,错误信息是磁盘已满,但是使用df -H查看分区信息时只使用了50%,请分析具体原因?

答:两种情况,一种是磁盘配额问题,另外一种就是EXT3文件系统的设计不适合很多小文件跟大文件的一种文件格式,出现很多小文件时,容易导致inode耗尽了。


7)请使用Linux系统命令统计出establish状态的连接数有多少?

netstat -an |grep ESTABLISHED |wc -l

【评析】netstat命令-a参数是“显示所有链接”(all),-n是不要域名解析,即都是以数字IP的显示。这俩是高频参数。

这里要用大写的ESTABLISHED,因为小写的established显示出来的东西是不对的,可以自己动手试试,所以这里的大小写是一个隐藏点。

然后再用wc -l来统计数。如果这道题要再多补充“查80端口的establish”,那么就是netstat -an|grep 80 |grep ESTABLISHED |wc -l

补充一句,现实生产的时候,如果服务器维持的链接是成千上万的话,少用netstat,多用ss。不过ss命令面试的时候考的不多,有个大概了解即可。


8)统计出一台web server上的各个状态(ESTABLISHED/SYN_SENT/SYN_RECV等)的个数?

netstat -antl|grep ESTABLISTHED|wc -l

netstat -antl|grep SYN_SENT|wc -l

netstat -antl|grep SYN_RECV|wc -l

【评析】这道题跟上一道题的相似度很高,netstat命令的-t参数是查询tcp协议的链接,-l参数是查询listen状态下的链接。netstat -an的话会出现大概三个部分的内容,一部分是tcp协议内容,一部分是udp协议的内容,还有一部分是unix socket方面的链接,Active UNIX domain sockets (servers and established)。unix那部分内容很多,如果用了-t /-u的参数,那么后面的unix内容就会不显示。


9)查找/usr/local/apache/logs目录最后修改时间大于30天的文件并删除

find /usr/local/apache/logs -type f -mtime +30 -ok rm {} \;

【评析】find命令以及相关搭配命令是笔试中的重点,因为在现实中运用的情况最多,所以必考必考必考!!!

使用mtime +30来描述“修改时间大于30天”,使用-type -f来描述“文件”,然后使用-ok命令将所有满足的文件都执行下一步操作。这里是删除文件,所以比较人性化的用ok,删之前询问一下,如果简单暴力就可以直接-exec,直接枪毙掉。用了-exec 的话是不用-f的,多此一举。


10)编写个shell脚本将/usr/local/test 目录下大于100K的文件转移到/tmp目录

1
2
3
touch AAA.sh
#!/bin/bash
find /usr/local/test/ -size +100K -exec mv {} /tmp \;


【评析】-exec and -ok后面的花括号里面的内容就是使用find命令查找出来的文件名。


11)添加一条到192.168.3.0/24的路由,网关为192.168.1.254?

route add  -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.1.254  或者  route add -net 192.168.3.0/24 gw 192.168.1.254

【评析】route命令是临时性的增加路由,如果需要永久性的添加路由,方法一,#vim etc/rc.local,在文件里加上 route add -net 192.168.3.0/24 gw 192.168.1.254。方法二,#vim etc/sysconfig/network 在后面加上GATEWAY=192.168.1.254,用这个方法来增加网关。然后# route -n检查一下。


12)在每周6的凌晨3:15执行/home/shell/collect.pl,并将标准输出和标准错误输出到/dev/null设备,请写出crontab中的语句?

15 3 * * 6 sh /home/shell/collect.pl  > /dev/null  2>&1  

【评析】每一个命令的执行肯定都会有“成功”or“失败”,系统默认1是“stdout标准输出”,2是“stderr标准错误”,&的含义是“等同”,2>&1的意思就是“将错误的信息重定向输出的地方跟1一样,都是去空设备文件”。


13)在11月份内,每天的早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh 怎么实现 ?

crontab -e

1 6-12/2 * 11 *  bash /usr/bin/httpd.sh

【评析】crontab、at这种计划任务命令也是面试高频题目,crontab一共有5个*,分别表示“分钟”、“小时”,“日期”、“月份”、“星期几”。基本的结构要明白,而且“当大数有条件,小数任意”的情况下,小数不要用*,用0or 1,如果这道题写成“* 6-12/2 * 11 * bash /usr/bin/httpd.sh”,你的apache会很爽,它会在满足条件的情况下每一分钟都启动一下。



14)匹配AAA文本中的key并打印出该行及下面的5行?

grep -A 5 key AAA

【评析】-A是查找关键词下面的行,-B是查找关键词上面的行,-C是上下的行,注意这里是grep,而不是find。


15)查询AAA文件里以abc结尾的行?

grep "abc$" AAA

【评析】这里不是grep "abc$" | AAA!,这里没有“|”的,要注意。


16)打印出AAA文件第1到第3行?

head -3 AAA

【评析】没啥说的,太基础了。用sed -n '1,3p' AAA更稍微的有一点技术含量。但是用sed命令,要注意搭配-n,要是不搭配-n,你可以试试。


17)查询AAA里面空行的所在行号?

grep -n "^$" AAA

【评析】同样这是基础中的基础,送分中的送分。但是要注意grep -n和cat -n这两个输出结果的区别。


18)利用sed命令将test.txt中所有的回车替换成空格?

sed -e "s/\n/ /g" test.txt

【评析】sed的-e参数是指多重编辑,也就是说可以sed -e ... -e .... -e....一次性完成三个动作。


19)使用ab命令进行100000次请求,同时每秒40次并发的频率访问http://www.123.com/AAA.txt

ab -n 100000 -c 40 http://www.123.com/AAA.txt

【评析】ab命令好像是apache自带的,同一个IP地址并发的访问网站的同一个内容其实是一个隐患,但是现在用路由器上网的情况满地走,所以优化网页的内容是码农的责任,但是适当的缩小准许并发范围是运维人员应该掌握的。


20)按照以下要求配置一个防火墙规则

1.对所有地址开放本服务器的80端口、22端口、10~21端口。

2.其他机器可以用ping命令来探测本服务器的链接情况

3.其他没有被准许的端口将禁止访问

iptables -I INPUT -p tcp -dport 80 -j ACCEPT

iptables -I INPUT -p tcp -dport 22 -j ACCEPT

iptables -I INPUT -P tcp -dport 10:21 -i ACCEPT

iptables -I INPUT -p icmp -j ACCEPT

iptables -I INPUT -j REJECT

【评析】iptables也是面试考察的一个重点内容。iptables的内容主要包括“四表+五链”,不过具体问道哪四表哪五链的可能性很小,倒是这种结合实际情况直接让写一连串的规则考题蛮常见的。这道题很基础,写iptables有点在CCNP里写acl 控制访问列表的意思。


===================================分割线============================================

这一套题算是简单的,考的内容基本是linux基本原理、查找命令、计划命令、防火墙设置等,以上这四点基本算是初级内容,如果在考查询命令里考的是sort命令,那么难度就有提升。而如果加入一点shell编程的话,整个难度又会有所提高,再补充一点ftp原理和各网络端口的考察,那么这套题就颇有杀威风的含义了。


做题要注意,切忌眼高手低,一定要实际的去操作一下或者用笔在纸上写一写,虽然笔者不鼓励把公司的面试笔试当成CCNP或者考研那样死记硬背,更多的目的是让学习者结合题目去感受到linux的操作。其实面试就是开头难,别人出题你写题你难受,等混成大牛了,你出题然后再看别人写的答案,就会很轻松了。


 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1741809



相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
C++
C/C++工程师面试题(指针篇)
C/C++工程师面试题(指针篇)
49 0
|
2月前
|
网络协议 网络性能优化 C++
C/C++工程师面试题(网络编程篇)
C/C++工程师面试题(网络编程篇)
42 0
|
2月前
|
Linux Shell 调度
Linux面试题
Linux 一般是指 Linux 内核、 Linux 系统、 Li nux 发行版。严格意义上说 Linux 是指由 Linus Torvalds 维护的并发布的内核。它的代码只包括内核而不包括其它方面的应用。内核提供系统核心服务,如进程管理,进程的调度,虚拟文件系统,内存的管理等等。
85 0
Linux面试题
|
7天前
|
Linux Go
Linux命令Top 100驱动人生! 面试必备
探索Linux命令不再迷茫!本文分10部分详解20个基础命令,带你由浅入深掌握文件、目录管理和文本处理。 [1]: <https://cloud.tencent.com/developer/article/2396114> [2]: <https://pan.quark.cn/s/865a0bbd5720> [3]: <https://yv4kfv1n3j.feishu.cn/docx/MRyxdaqz8ow5RjxyL1ucrvOYnnH>
58 0
|
14天前
|
安全 应用服务中间件 网络安全
渗透测试工程师面试题大全
渗透测试工程师面试题大全
|
27天前
|
敏捷开发 安全 API
C/C++ 工程师面试:如何精彩展示你的项目经验并获得高分
C/C++ 工程师面试:如何精彩展示你的项目经验并获得高分
71 0
|
1月前
|
消息中间件 Dubbo Java
互联网 Java 工程师1000道面试题(485页)
互联网 Java 工程师1000道面试题(485页)
27 0
|
1月前
|
算法 Linux 调度
嵌入式linux面试题目总结
嵌入式linux面试题目总结
32 0
|
2月前
|
Linux
Linux面试常用命令大全(常用指令)
Linux面试常用命令大全(常用指令)
|
2月前
|
运维 Linux Docker
Linux运维工程师必须要掌握的Docker命令,我给你整理好了!
Linux运维工程师必须要掌握的Docker命令,我给你整理好了!
169 2