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目录
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的操作。其实面试就是开头难,别人出题你写题你难受,等混成大牛了,你出题然后再看别人写的答案,就会很轻松了。