linux系统运维面试题简答

1.     简述经常使用高可用技术node

解答:linux

Keepalived:Keepalived是一个保证集群高可用的服务软件,用来防止单点故障,使用VRRP协议实现。在master和backup之间经过master主动下降本身的权值或者backup检测到master出现故障时,backup将会接管master的工做,继续服务。ios

HAproxy:HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速而且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点一般又须要会话保持或七层处理。HAProxy运行在当前的硬件上,彻底能够支持数以万计的并发链接。而且它的运行模式使得它能够很简单安全的整合进您当前的架构中,同时能够保护你的web服务器不被暴露到网络上。nginx

heartbeat+ DRBD:web

heartbeat (Linux-HA)的工做原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测能够经过网络链路和串口进行,并且支持冗 余链路,它们之间相互发送报文来告诉对方本身当前的状态,若是在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。算法

Distributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。shell

数据镜像:实时、透明、同步(全部服务器都成功后返回)、异步(本地服务器成功后返回)windows

2.     简述一下DNS的解析过程浏览器

解答:缓存

一、在浏览器中输入www.qq.com域名,操做系统会先检查本身本地的hosts文件是否有这个网址映射关系,若是有,就先调用这个IP地址映射,完成域名解析。

二、若是hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,若是有,直接返回,完成域名解析。

三、若是hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此咱们叫它本地DNS服务器,此服务器收到查询时,若是要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具备权威性。

四、若是要查询的域名,不禁本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具备权威性。

五、若是本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,若是未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来受权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,若是本身没法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动做,进行查询,直至找到www.qq.com主机。

六、若是用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器若是不能解析,或找根DNS或把转请求转至上上级,以此循环。不论是本地DNS服务器用是是转发,仍是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。

3.     简单介绍下你使用过的服务器监控软件,并简要说明下它们各自的特色,介绍下经常使用的监控指标。查看当前Linux系统的状态,如CPU使用,内存使用,负载状况等,查看占用内存最大的5个进程

解答:

Nagios,

Nagios 能够监控的功能有:

一、监控网络服务(SMTP、POP三、HTTP、NNTP、PING等);

二、监控主机资源(处理器负荷、磁盘利用率等);

三、简单地插件设计使得用户能够方便地扩展本身服务的检测方法;

四、并行服务检查机制;

五、具有定义网络分层结构的能力,用"parent"主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;

六、当服务或主机问题产生与解决时将告警发送给联系人(经过EMail、短信、用户定义方式);

七、能够定义一些处理程序,使之可以在服务或者主机发生故障时起到预防做用;

八、自动的日志滚动功能;

九、能够支持并实现对主机的冗余监控;

十、可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等;

十一、能够经过手机查看系统监控信息;

十二、可指定自定义的事件处理控制器;

查看当前系统的状态:top

查看占用内存最大的5个进程:top,而后按M(大写)键。方法二:ps -aux | sort -k4nr | head -5

4.     使用Windows服务管理命令开启BEASD的服务,并查看当前创建的链接数,默认端口为80

解答:

启动服务:net start BEASD

若是服务被禁止启动,使用该命令:sc config BEASD=demand(手动)|auto(自动)|disabled(禁用);sc start BEASD

5.     简述Linux系统的开机启动顺序,查询程序运行级别和修改运行级别。

解答:

POST加电自检--》MBR引导--》GRUB--》加载内核--》启动init进程--》读取/etc/inittab文件,/etc/init/*.conf文件--》使用/etc/rc.d/rc.sysinit初始化脚本--》执行/etc/rc.d/rc脚本(加载/etc/rc3.d/下全部脚本)--》执行/etc/rc.d/rc.local--》执行/bin/login登陆程序

查询程序运行级别:runlevel

修改运行级别:init [0123456]

6.     简述软连接和硬连接的区别。

解答:

软连接是指建立一个新的文件,block里存放的是被连接文件的文件名指向,软连接的inode与源文件的inode不一样,将源文件删除,而后重建,改变了inode,软连接文件仍然有效。

硬连接是建立一个新的文件名,将它的inode指向源文件的inode,因此硬连接的inode和源文件是相同的,源文件被删除后,硬连接仍然能够有效,。

7.     主机A须要给主机B传输一份100G的数据,能够作哪些传输优化?

解答:

  1. 数据打包压缩

  2. 数据分片,同步传输

  3. 增大传输带宽,网络端口聚合

8.     简述LVS的工做模式和调度算法,大并发环境推荐架构。

解答:

工做模式:NAT,TUNNEL,DR,FULLNAT

算法

说明

rr

轮询调度(Round-Robin),它将请求依次分配不一样的RS节点,也就是在RS节点中均摊请求。这种算法简答,可是只适合于RS节点处理性能相差不大的状况

wrr

加权轮询调度(Weighted  Round-Robin)它将依据不一样RS节点的权值分配任务。权值较高的RS将优先得到任务,而且分配到的链接数将比权值较低的RS节点更多。相同权值的RS获得相同数目的链接数。

dh

目的地址哈希调度(Destination  Hashing)以目的地址为关键字查找一个静态hash表来得到须要的RS

sh

源地址哈希调度(Source  Hashing)以源地址为关键字查找一个静态hash表来得到须要的RS

lc

最小链接数调度(Least-Connection),IPVS表存储了全部的活动的链接。把新的链接请求发送到当前链接数最小的RS

wlc

加权最小链接数调度(Weighted  Least-Connection)假设各台RS的权值依次为Wi(I=1..n),当前的TCP链接数依次为Ti(I=1..n),依次选取Ti/Wi为最小的RS做为下一个分配的RS

lblc

基于地址的最小链接数调度(Locality-Based Least-Connection),未来自同一目的地址的请求分配给同一台RS节点,若是这台服务器已满负荷,分配给链接数最小的RS,并以它为下一次分配的首先考虑

lblcr

基于地址带重复最小链接数调度(Locality-Based Least-Connection with Replication),对于某一目的地址,对应的一个RS子集。对此地址请求,为它分配子集中链接数最小RS;若是子集中全部服务器均已满负荷,则从集群中选择一个链接数较小服务器,将它加入到此子集并分配链接;若必定时间内,未被作任何修改,则将子集中负载最大的节点从子集删除

SED

最短的指望的延迟(Shortest  Expected Delay Scheduling SED)

基于wlc算法。举例:

ABC三台机器分别权重123,链接数也分别是123.那么若是使用WLC算法的话一个新请求进入时它可能会分给ABC中的任意一个。使用SED算法后会进行这样的运算:

A(1+1)/1

B(1+2)/2

C(1+3)/3

根据运算结果,把链接交给C

NQ

最少队列调度(Never  Queue Scheduling NQ)

无需队列。若是RS的链接数=0就直接分配过去,不须要再进行SED运算

大并发环境推荐:DR模式,rr调度算法。

9.     简述TCP三次握手的过程?

解答:

wKiom1ii9qjCscn2AAEEMO9NDeg316.jpg-wh_50

 

10. sed将文件test.txt中的全部”/opt/tmp”改成”/root/tmp”,并删除全部空行。

解答:

sed -i ‘s#/opt/tmp #/root/tmp #g’test.txt|sed -i ‘/^\s*$/d’

11. 将192.168.16.3这台Windows的server文件夹挂载到linux本地/mnt/server目录,Windows的帐户为:administrator,密码为:123456

解答:

一、先在windows下面共享须要挂载的目录server。

二、确保linux与windows是在同一个局域网当中。

三、在linux下面建立一个须要挂载到的目录/mnt/server。

四、利用mount命令进行挂载。

挂载命令:mount -t cifs -o username=administrator,password=123456//192.168.16.3/server /mnt/server

12. 写一个防火墙配置脚本,只容许远程主机访问本机的80端口。(linux iptables)

解答:

#!/bin/bash

#this is a server firewall

#updated by yehaifeng

#qq:769358362

#define var

IPT=/sbin/iptables

 

#Remove any existing rules

$IPT -F

$IPT -X

$IPT -Z

#setting default firewallpolicy

$IPT --policy OUTPUT ACCEPT

$IPT --policy FORWARD DROP

$IPT -P INPUT DROP

 

#setting for loopback interface

$IPT -A INPUT -i lo -j ACCEPT

$IPT -A OUTPUT -o lo -j ACCEPT

 

#accept 80 port only

$IPT -A INPUT   -p tcp --dport 80 -j ACCEPT

 

#save iptables

/etc/init.d/iptables save

 

13. 编写个shell脚本将/logs目录下3天前的文件转移到/tmp目录下。

解答:

#!/bin/bash

#this is to move file 3 yearago from /logs to /tmp

#updated by yehaifeng

#qq:769358362

 

#define var

FILE_FROM=/logs

FILE_TO=/tmp

DAY_AGO=3

 

cd $FILE_FROM

for file in `find $FILE_FROM-type f -mtime +3`

   do

              /bin/mv $FILE_FROM/$file $FILE_TO/$file

   done

 

14. 天天1:00备份/var/log目录下前一天的日志文件并存放到当前目录的btslog目录中,并删除15天前的log备份文件,请使用shell脚本完成。(日志格式为:btsvr.log.2016-01-01,打包备份文件格式为:btsvr.log.2016-01-01.tar.gz)

解答:

cat bak_logs.sh

#!/bin/bash

#this is to backup logs

#updated by yehaifeng

#qq:769358362

 

#define var

YESTERDAY=`date +%F -d '-1 day'`

LOG_DIR=/var/log

BAK_DIR=/var/log/btslog

LOG_FILE=btsvr.log

 

cd $LOG_DIR/

if [ -f $LOG_DIR/$LOG_FILE.$YESTERDAY] ;then{

tar zcf $LOG_DIR/$LOG_FILE.$YESTERDAY.tar.gz$LOG_DIR/$LOG_FILE.$YESTERDAY

/bin/mv $LOG_DIR/$LOG_FILE.$YESTERDAY.tar.gz/BAK_DIR/

}

else

       echo “the file is not exist.”

fi

 

使用定时任务天天1点执行该脚本:0001 * * * /bin/bash bak_logs.sh

15. 写一个脚本进行nginx日志统计,获得访问ip最多的前10个(nginx日志路径:/nginx/default/access.log)

解答:

cat bak_logs.sh

#!/bin/bash

#this is to backup logs

#updated by yehaifeng

#qq:769358362

 

#define var

LOG_FILE=/nginx/default/access.log

awk '{print $1}'/application/nginx/logs/access.log |sort|uniq -c|sort -r|head -10>/tmp/ip_max.txt

echo /tmp/ip_max.txt
相关文章
相关标签/搜索