发现逐个题目做效率太低,浪费时间,不如重新选题做!找命中概率最大的,做最有水准的题目,这算是这几天的作业吧,挑战快来了,不要被虐啊。其实状态也不好,浪费了很多时间


                                    初级运维(一)

 

1、写一个你最拿手的脚本?(命中率50%)

答:监控MySQL主从复制状态的脚本,并邮件报警

      1 #!/bin/bash

      2 #主从复制,在从服务器上写脚本,每天定时0:00执行

      3 #Author:Yue HongCai

      4 #2016-8-8

      5 

      6 PORT=`netstat -an|grep "3306"|wc -l

      7 IP=`ifconfig eth0|grep "inet addr"|awk -F ":" '{print $2}'|awk '{print $1}'

      8 if [ $PORT -eq 1];then 

      9         echo "mysql server is running."

     10 else    

     11         mail -s "$IP mysql server 3306 not found!" 15706107661@163.com

     12 fi      

     13 

     14 STATUS=${mysql -uroot -p123456 -S /tmp/mysql.sock -e "show slave status \G"|grep -i running}

     15 IO_ENV=${echo $STATUS|grep IO |awk '{print $2}'}

     16 SQL_ENV=${echo $STATUS|grep SQL|awk '{print $2}'}

     17 

     18 if [ $IO_ENV=="Yes" -a $SQL_ENV=="Yes" ];then

     19         echo "the slave repliaction is running"

     20 else    

     21         echo "+++++$date++++">>/check_mysql.log

     22         echo "slave is down.">>/check_mysql.log

     23         mail -s "$IP mysql slave repliaction is not OK!" 15706107661@163.com << /check_mysql.log

     24 fi


2、apache编译模块都有什么,功能是什么?(太难,命中率10%)

答:配置apache反向代理,需要用到apache的mod_rewrite和mod_proxy模块组


3、nagios的架构是什么?(中档题,命中率30%)

答:(1)nagios 进程对nagios.cfg主配置文件进行读取,该配置文件中放存着一系列操作客户端的配置信息。

(2)nagios 进程通过对类似于localhost.cfg的客户端配置文件进行操作,服务端执行插件与被监控端的代理进行通信,获取监控结果和数据。

(3)nagios进程将监控结果写入status.dat文件中,status.dat文件相当于日志或数据库

(4)cgi程序对status.dat文件中的监控结果进行分析,最终显示在web界面中。

参考文档:http://www.cnblogs.com/zhuhongbao/p/4174868.html


4、比较两个文件,用什么命令?(比较难,命中率20%)

答:cat file1 file2 | sort | uniq 取出两个文件的交集(只留下同时存在于两个文件中的文件)

cat file1 file2 | sort | uniq -d(repeated只输出重复的行)

cat file1 file2 | sort | uniq –u 删除交集,只留下其他的行

cat file1 file2 | sort |uniq -c 对每行出现的次数进行统计并打印

##cat file1 file2 >1.txt,将两个文件的内容整合一个文件中


5、apache配置文件里查看域名指向(难,一时懵逼,不知道啥意思,命中率10%)

答:估计是想考rewrite重写规则

两个域名 www.abc.com   www.def.com现在需要操作 打开 www.def.com 跳转到 www.abc.com

<VirtualHost *:80>

DocumentRoot /www/abc

php_admin_value open_basedir "/www/abc/tmp"

ServerName  www.abc.com

Serveralias abc.com www.def.com


RewriteEngine on

RewriteCond %{HTTP_HOST} ^www.def.com [NC]

RewriteRule ^/(.*) http://www.abc.com/ [L]


ErrorLog "/www/logs/apache/abc.com-error.log"

CustomLog "/www/logs/apache/abc.com-access.log"common

Include  "/www/apache/conf/httpd-platform-com-proxy-ajp.conf"

Include "/www/apache/conf/httpd-platform-rewrite.conf"

</VirtualHost>  


6、一个EXT3的分区,使用touch text.file命令系统提示磁盘已满,使用df -h命令查看磁盘大小时显示只使用了60%的空间为什么?(中档,30%)

答:用df -i查看INode使用情况,可能因为由于小文件过多,导致inode被耗尽,可能是因为/tmp目录有很多临时文件,find /tmp -type f -exec rm {} \;或者遍历寻找0字节的文件,并删除。find /home -type f -size 0 -exec rm {} \;最后的办法重新格式化某个分区

参考文档:http://www.cnblogs.com/myjavawork/archive/2011/11/09/2242296.html


7、内存管理中active,inactive,used,freed,swap的涵义?(前面两个没听说过,30%)

答:结合cat /proc/meminfo和free -m

Active: 在活跃使用中的缓冲或缓存大小,Inactive: 在不经常使用中的缓冲或缓存的大小,

used:已用内存大小,free:空闲内存大小,swap:因物理内存不够导致交换分区的大小


8、你认为linux和windows的本质区别的什么?(这个问题,我特么还真就被问过,主要是临场发挥我想不起来,回答地不够吸引人,命中率50%)

答:(1)安全机制,比如iptables、TCP_Wrappers、以及服务本身的权限,重重关卡让linux系统安全性有一定保障

(2)服务本身的稳定性,linux下应用服务的无故障工作时间好于windows,无论是从统计还是运维人员口中都能得出的结果

(3)开源与不开源的问题,性质不同,一个是为普通大众用户服务的,一个是为专业人士服务的

(4)linux是分时多用户多任务系统,而windows是单用户系统


9、nagios怎么短信报警?(我擦,这个问题,正是我需要搜索的,太难,有空细细研究,命中率50%)

答:下载飞信,在command.cfg中定义define command{},在templates.cfg中定义define contact{},最后重新启动nagios。

参考文档http://www.cnyunwei.com/portal.php?mod=view&aid=89493


10、我有一个文件夹里面有很多文件,如何按时间排序,怎么全部列出来?(还是比较难,命中率50%)

答:使用sort -k命令,-k指定按第几列关键字进行排序,我们可以知道时间是在哪一列,然后ll |sort -k 7


11、把a.txt b.txt c.txt 压缩到back.tar.gz,如何查看压缩包里面的文件(比较简单,40%)

答:tar -zcvf back.tar.gz {a.txt,b.txt,c.txt}   tar -ztvf back.tar.gz 查看其中打包的文件 (-t即list)


12、SMB服务器怎么添加用户?如何设置共享文件夹?(一口气说出来不容易,命中率30%)

(1)、useradd 用户

(2)、 smbpasswd -a 用户

(3)、输入密码两次。

(4)、然后 vi /etc/samba/smb.conf

[共享名]

comment = sales stuff

path = /var (共享路径)

valid users = 用户名

public = yes

writable = yes

printable = no

create mask = 0777

directory mask = 0777

最后重启服务service smb restart


13、介绍下nginx负载均衡(这个比较生疏啊,接触不多,40%)

答:nginx能做反向代理和动静分离,upstream目前支持5种方式的负载均衡调度分配算法 

1)、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 

2)、weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 

3)、ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。  

4)、fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。  

5)、url_hash(第三方)

vi /usr/local/nginx/conf/nginx.conf

http {

include      mime.types;

default_type  application/octet-stream;

sendfile        on;

keepalive_timeout  65;

upstream myServer{

server www.linux.com:80;

server www.88181.com:8080;

}

server {

listen      80;

server_name  my22;

location / {

proxy_pass  http://myServer;

}

}

}

效果:输入http://192.168.1.113/index.php之后,不停的刷新,你会发现,会在I'm the 88181、I'm the linux

这两个页面之间来回交换,view会每刷新两下增加一次,这也证明了前面所说的默认是轮训的方式

参考文档:http://www.linuxdiyf.com/linux/10205.html


14、说出数据库的几种备份方法,并说出优缺点(说浅点行,40%)

答:(1)mysqldump备份 (2)mysqlhotcopy备份 (3)启用二进制日志(binlog)主从复制备份(4)rsync备份(5)cp拷贝文件(6)第三方工具如BigDump

从性质上来说分为事务日志备份、增量备份、完全备份、差异备份

参考文档:http://blog.csdn.net/enweitech/article/details/51612858


15、简述一下Nagios的安装步骤(呵呵,问到这种问题,真的很无语,我尼玛步骤那么长!命中率50%)

答:(1)部署好LAMP环境,下载nagios源码包,需要解压并进入该nagios目录,(2)./configure --prefix=/usr/local/nginx,make all ,make install ,make install-init,make install-config ,make install-commandmode ,make install-webconf(3)创建Nagios用户和组,安装nagios-plugin插件直接安装./configrue &&make &&make install,(4)htpasswd -c /usr/loacl/nagios/etc/

htpasswd.users nagiosadmin(5)重启apache和nagios,登录http://IP/nagios/


16、怎么创建隐藏目录?将已有的文件隐藏呢?(这个问题比较新颖啊,只知道隐藏文件用ls -a可以看到.表示隐藏文件,命中率20%)

答:mkdir .test_dtr  ##在文件夹前面用一个.表示,估计创造隐藏文件也是这样,如果是已有文件改名加点即可。


17、当一个文件5分钟没有被修改,则给某个邮箱发邮件。用shell完成。(难,记不住命令,命中率50%)

答:#!/bin/bash

FILE=`find . mmin 5 -a -type f`   ##-mmin n 对文件数据的最近一次修改是在 n 分钟之前

if [ ! -z $FILE ];then

mail -s "这个文件 $FILE 已经5分钟没有被修改了" 15706107661@163.com

fi

参考文档:https://www.kafan.cn/edu/45424616.html


18、sed awk grep find的区别 (这道题太容易考了,命中率80%)

答:sed:一行一行读取的内容到内存中,匹配模式空间,如果满足条件则进行处理,如果不满足则读取文本中的下一行继续进行比对。那么sed主要用来处理每行的

awk:读取整行内容赋给$0,再根据分隔符,将每一列的值赋给$1,$2,知道最行一列$NF,最后进行打印,接着读取下一行

grep:过滤文本中的某个字段,并且打印出含有该字段的整行内容。

find :用户在某个目录下查找,对系统消耗比较大


19、nat与dr的区别?(常考,命中率60%) 

答:(1)nat是指经过负载均衡器,将数据包的目的IP地址改为真实服务器的IP地址,并且可以适用于公网和私网环境,当数据包应答的时候会经过负载均衡器,从而成为整个系统的瓶颈。

(2)而DR直接路由模式,请求报文经过负载均衡器,经过一定的调度算法,将数据包的目的MAC地址改为real server的MAC地址,并且所有真实服务器的环回网卡

上都共享VIP地址,忽略ARP应答,在应答报文的时候不需要负载调度器,从而可以接受可多的并发请求,但只能用于私有网络环境。


20、Mysql主从复制原理,以及mysql数据库主从中关键的配置是什么?(不难,越详细越好,命中率50%)

答:Master具有IO线程,slave具有SQL线程和IO线程。

(1)在从服务器执行slave start,从服务器上IO线程会通过授权的用户连接上master,并请求master从指定的文件和位置之后发送bin-log日志内容。

(2)Master服务器接收到来自slave服务器的IO线程的请求后,master然后返回给slave相应的bin-log内容以及在binlog中的下一个指定更新位置。

(3)Slave的IO进程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的bin-log的文件名和位置

记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉Master"我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”;

(4)Slave的Sql进程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行的命令,并将数据写入磁盘。

关键步骤就是:master端授权和slave端指定master的IP地址以及同步的pos点:

change master to>

master_host='192.168.149.128'>

master_user='tongbu'>

master_password=’123456'>

master_log_ file=’mysq I一bin.000006'>

master_log_pos=98;


21、访问网站出现500错误,什么原因,举出三种情况,如何解决?(这题是让说原因,那就真难了,命中率40%)

答:(1)权限配置问题,文件没有权限进行读取,就会抛出这个错误,查看错误日志能解决。

(2).htacess配置错误,一种是里面语法有错误,一种是没有取消注释module_rewrite,而.htacess里面却进行了rewrite.

(3)虚拟主机配置文件有问题,试试用IP访问看看


22、tcpdump的使用,将从网段192.168.32.0/23发往本机80端口的数据监控下来(简单,但也是考点,30%)

答:tcpdump tcp port 80 and net 192.168.1.0/24  ##如果是某台主机host 192.168.1.1


23、 nginx服务器发生502错误(只知道错误网关,不知道如何解决,30%)

答:Nginx 502 Bad Gateway的含义是请求的fastcgi已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致fastcgi进程终止

通常的出现情况就是后端主机服务不可用或者系统宕机,PHP无法进行,或超时

参考文档:http://www.cnblogs.com/mybest/archive/2012/12/27/2836211.html


24、分解文件a,以文件内的行数为分割界限,每个分割后的小文件内有2000行,分割后文件名为a01,a02….a[N](此题新颖,不容易答出来,20%)

答:split -d -l 2000 a a ##-d(delimiter)选项可以指定后缀为数字,如00,01,02,第一个a代表文件名,第二个a代表新文件名的前缀为a

参考文档:http://www.jb51.net/LINUXjishu/115514.html


25、把a目录下的所有普通文件,移动到b目录下,同时保证权限不变,如何操作?

答:#!/bin/bash

    for file in `ll /a`

do

if [ -f $file ];then

cp -p $file /b  ##-p (preserve)保持的意思

done

26、Ddos***有几种方式,都是怎么做的防护?(问DDOS***原理是倒容易,但是要问起方式,就不知道了,命中率30%)

答:SYN Flood,Smurf、TearDrop、ping of death等等,在最前端部署硬件防火墙,如华赛USG500、天泰防火墙

参考文档:http://jingyan.baidu.com/article/7c6fb42848410480642c9023.html


27、keepalived 和 heartbeat对比 (暂时没研究这么说,但万一考到呢,30%)

答:Keepalived使用的vrrp协议方式,虚拟路由冗余协议 ;Heartbeat是基于主机或网络的服务的高可用方式;

keepalived的目的是模拟路由器的双机,heartbeat的是用服务的双机

lvs的高可用建议用keepavlived,业务的高可用使用heartbeat


28、Nginx、Lvs、HAProxy负载均衡的区别,怎么实现会话保持? (重量级题目,比较长,挑重点说,不然也记不住,命中率50%)

答:(1)Nginx:优点:支持rewrite规则,对网络带宽要求不高,稳定性高,用于反向代理,宕机的概率极小,内置对后端服务器的端口检测健康检查功能。

    缺点:仅支持http、mail的负载均衡

会话保持机制:使用upstream模块的ip_hash机制,将某个IP的请求固定定向到同一台服务器上。

upstream backend {

ip_hash;

server 192.168.1.1:80;

server 192.168.1.2:80;

}

(2)LVS:优点:抗负载能力强,工作在4层(接入层)仅作分发之用,没有流量的产生,调度算法尤为丰富,配置简单

 缺点:软件本身不支持正则表达式处理,不能做动静分离

  会话保持机制:利用persistence(单位为秒)来设定会话保持时间。

(3)HAProxy:支持全透明代理,支持连接拒绝以便抗DDOS***,支持虚拟主机,自带强大的监控服务器状态的页面。

缺点:暂时没找到

会话保持机制:balance source 基于源地址的负载均衡

参考文档:http://www.ha97.com/5646.html


28、CDN原理和智能DNS(这是加分题啊,命中率50%)

答:CDN其实跟大多数缓存服务器原理相同,它是一种边缘网络,为距离用户最近的站点提供访问,提高访问速度

 (1)用户向浏览器输入域名,浏览器第一次发现本地没有dns缓存,请求指向了CDN网络中的智能DNS负载均衡系统;

 (2)智能DNS负载均衡系统解析域名,把对用户响应速度最快的IP节点返回给用户;

 (3)用户向该IP节点(CDN服务器)发出请求;

 (4)由于是第一次访问,CDN服务器会向原web站点请求,并缓存内容;

 (5)请求结果发给用户

智能DNS:由于中国电信在北方,中国联通在南方,造成南方用户访问电信服务器站点特别慢。于是提出智能DNS,如果你是联通用户,解析出联通服务器的IP供你使用,它使用的是bind+view架构。值得一提的是,它是根据用户请求所在地的本地DNS判断是联通用户还是电信用户。


29、一台WEB服务器近三个月都比较稳定,今天突然发现内存使用率很高,如何解决?(最爱考这种题了,命中率90%)

答:使用top命令,按下Shift+M键查看是什么进程造成内存飙升的,凭经验来说可能是mysql的问题,检查访问日志是否有恶意访问。


30、编辑一个文件,root用户,文件是只读方式,如何保存退出,普通用户呢?(命令是真不好记,20%)

答:root:  wq!    普通用户:w! sudo tee %


31、将A 、B、C目录下的文件A1、A2、A3文件,改名为AA1、AA2、AA3.使用shell脚本实现。

答:#!/bin/bash

N=1

for dir in A B C

do

cd /$dir 

mv A$N AA$N

let N=N+1

cd ..

done


32、系统调优参数列举(难题啊,命中率40%)

答:一般是TCP参数,vi /etc/sysctl.conf

net.ipv4.tcp_fin_timeout=30  ##如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT2状态的时间

net.ipv4.tcp_keepalive_time=3200  ##保持长连接的时间

net.ipv4.tcp_syncookies=1  ##当出现SYN等待队列溢出时,启用cookie来处理,可防范少量的SYN***

net.ipv4.tcp_max_syn_backlog=8192 ##表示SYN队列的长度

net.ipv4.tcp_max_tw_buckets=5000 ##系统保持TIME_WAIT套接字的最大数量

sysctl -p ##配置参数生效


33、取出*.log日志文件中第七列和第九列,通过IP进行排序。

答:awk -F ":" '{print $7,$9}' *.log |sort -k 1 |sort -nr

 

34、cacti的日志在哪? 

答:/var/www/htm/cacti/log