运维工程师面试笔试题总结(二)

1、Linux启动大致过程?

1)POST:通电自检
2)BIOS:BOIS自检,加载硬盘
3)读取MBR,进行MBR引导
4)grub引导菜单
5)加载内核 Kernel(ramdisk)
6)启动init进程,依据inittab文件设定运行级别
7)init进程,执行rc.sysinit文件
8)启动内核模块,执行不同级别的脚本程序
9)执行/etc/rc.d/rc.local
10)启动mingetty,进入系统登陆界面。

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

apache主要有两种工作模式:prefork(apache的默认安装模式)和worker(可以在编译的时候添加–with-mpm=worker选项)
prefork的特点是:
1.这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销
2.可以防止意外的内存泄漏
3.在服务器负载下降的时候会自动减少子进程数

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

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

3、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。

4、简述/etc/fstab里面个字段的含义?

因为mount挂载在重启服务器后会失效,所以需要将分区信息写到/etc/fstab文件中让它永久挂载:
磁盘分区 挂载目录 文件格式
/dev/sdb1 /mnt/david ext4 defaults 0 0

5、Apache设置虚拟目录的字段?

NameVirtualHost 192.168.1.2 //设置域名虚拟主机使用的IP地址
<VirtualHost 192.168.1.2:80> //建立在地址上的虚拟主机区域
ServerName www.sfzhang.com //虚拟主页说使用的域名
DocumentRoot /data/vhosts/sfzhang //建立虚拟主机所使用的文档根目录

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

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

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

netstat -an |grep 80 |grep ESTABLISHED |wc -l

8、mysql数据库的备份还原是怎么做的?

答:平时采用两种方法来做:
1)利用mysql自带的使用工具mysqldump和mysql来备份还原数据库
2)利用第三方的mysql管理工具比如:mysqladmin
3)停止mysqld服务拷贝数据文件

9、Linux系统是由那些部分组成?

Linux系统内核,shell,文件系统和应用程序四部分组成。

10、用一条命令查看目前系统已启动服务所监听的端口?

 netstat -antl |grep "LISTEN"  

11、使用lsof命令查看占用80端口的进程?

 lsof `which httpd`   或者lsof -i:80也可以

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

[root@nagios ~]# netstat -antl |grep "ESTABLISHED" |wc -l
[root@nagios ~]# netstat -antl |grep "SYN_SENT" |wc -l
[root@nagios ~]# netstat -antl |grep "SYN_RECV" |wc -l
上面的命令可以用一条命令来统计出来TCP各种状态连接总数:
[root@nagios ~]# netstat -n |grep ^tcp |awk '{print $NF}' |sort -r |uniq -c  

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

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

14、添加一条到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

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

sed -i s/\r/ /g test.txt 

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

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

17、源码编译安装apache,要求为:安装目录为/usr/local/apache,需有压缩模块,rewrite,worker模式;并说明在apache的worker MPM中,为什么ServerLimit要放到配置段最前面?

./configure --prefix=/usr/local/apache --enable-so--with-rewrite --with-mpm-worker
不放在最前面,client会忽略掉的

18、请写出精确匹配IPv4规范的正则表达式?

grep "[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}.[0-9]\{3\}"  access.logs

19、匹配文本中的key,并打印出该行及下面的5行?

grep -A5 key filename

20、dmesg命令中看到ip_conntrack: table full, dropping packet.,如何解决?

加大ip_conntrack_max 的值;
降低ip_conntrack_timeout的时间;

21、查询file1里面空行的所在行号?

grep -n "^$" file1

22、查询file1以abc结尾的行?

grep "abc$" file1

23、打印出file1文件第1到第三行?

sed -n '1,3p' file1 
用head -3 file1也可以

24、如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.2.1?

iptables -t nat -A PREROUTING -d LOCALIP -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.1:8080
iptables -t nat -A POSTROUTING -d 192.168.2.1 -p tcp -m tcp --dport 8080 -j SNAT --to-source LOCALIP:80

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

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

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

find /usr/local/test -type f -size +100k -exec mv {} /tmp \;

27、有三台Linux主机,A,B和C,A上有私钥,B和C上都有公钥,如何做到用私钥从A登录到B后,可以直接不输密码即可再登录到C?并写出具体命令行。

大致思路在A上面ssh-keygen -t dsa 直接回车生成密钥,
然后把公钥分别用ssh-copy-id拷贝到B和C上面。
ssh-copy-id -i id_dsa.pub "-p端口号 root@B的ip地址",
然后在A上面就可以用ssh -p端口号 
root@IP不要密码直接登录服务器B和C。

猜你喜欢

转载自blog.csdn.net/Argued_D/article/details/85338366