标签:运维
发现逐个题目做效率太低,浪费时间,不如重新选题做!找命中概率最大的,做最有水准的题目,这算是这几天的作业吧,挑战快来了,不要被虐啊。其实状态也不好,浪费了很多时间
初级运维(一)
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
标签:运维
原文地址:http://19951008.blog.51cto.com/11185699/1836658