linux系统运维面试题简答
1. 简述常用高可用技术
解答:
Keepalived:Keepalived是一个保证集群高可用的服务软件,用来防止单点故障,使用VRRP协议实现。在master和backup之间通过master主动降低自己的权值或者backup检测到master出现故障时,backup将会接管master的工作,继续服务。
HAproxy:HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。
heartbeat+ DRBD:
heartbeat (Linux-HA)的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。
Distributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。
数据镜像:实时、透明、同步(所有服务器都成功后返回)、异步(本地服务器成功后返回)
2. 简述一下DNS的解析过程
解答:
1、在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。
6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。
3. 简单介绍下你使用过的服务器监控软件,并简要说明下它们各自的特点,介绍下常用的监控指标。查看当前Linux系统的状态,如CPU使用,内存使用,负载情况等,查看占用内存最大的5个进程
解答:
Nagios,
Nagios 可以监控的功能有:
1、监控网络服务(SMTP、POP3、HTTP、NNTP、PING等);
2、监控主机资源(处理器负荷、磁盘利用率等);
3、简单地插件设计使得用户可以方便地扩展自己服务的检测方法;
4、并行服务检查机制;
5、具备定义网络分层结构的能力,用"parent"主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;
6、当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式);
7、可以定义一些处理程序,使之能够在服务或者主机发生故障时起到预防作用;
8、自动的日志滚动功能;
9、可以支持并实现对主机的冗余监控;
10、可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等;
11、可以通过手机查看系统监控信息;
12、可指定自定义的事件处理控制器;
查看当前系统的状态: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的数据,可以做哪些传输优化?
解答:
数据打包压缩
数据分片,同步传输
增大传输带宽,网络端口聚合
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三次握手的过程?
解答:
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
解答:
1、先在windows下面共享需要挂载的目录server。
2、确保linux与windows是在同一个局域网当中。
3、在linux下面创建一个需要挂载到的目录/mnt/server。
4、利用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: #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 port only $IPT -A INPUT -p tcp --dport -j ACCEPT #save iptables /etc/init.d/iptables save
13. 编写个shell脚本将/logs目录下3天前的文件转移到/tmp目录下。
解答:
#!/bin/bash #this is to move file yearago from /logs to /tmp #updated by yehaifeng #qq: #define var FILE_FROM=/logs FILE_TO=/tmp DAY_AGO= cd $FILE_FROM for file in `find $FILE_FROM-type f -mtime +` 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: #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: #define var LOG_FILE=/nginx/default/access.log awk '{print $1}'/application/nginx/logs/access.log |sort|uniq -c|sort -r|head ->/tmp/ip_max.txt echo /tmp/ip_max.txt
linux系统运维面试题简答的更多相关文章
- Linux系统运维常见面试简答题(36题)
1.请描述下linux 系统的开机启动过程开机加电BIOS自检———–>MBR引导———–>grub引导菜单———–>加载内核———–>启动init进程———–>读取in ...
- Linux系统运维相关的面试题 (问答题)
这里给大家整理了一些Linux系统运维相关的面试题,有些问题没有标准答案,希望要去参加Linux运维面试的朋友,可以先思考下这些问题. 一.Linux操作系统知识 1.常见的Linux发行版本都有 ...
- Linux系统运维笔记(五),CentOS 6.4安装java程序
Linux系统运维笔记(五),CentOS 6.4安装java程序 用eclipse编译通的java程序,现需要实施到服务器.实施步骤: 一,导出程序成jar包. 1,在主类编辑界面点右健,选 ru ...
- Linux系统运维笔记(四),CentOS 6.4安装 MongoDB
Linux系统运维笔记(四),CentOS 6.4安装 MongoDB 1,下载 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6 ...
- Linux系统运维笔记(四),CentOS 6.4安装Nginx
Linux系统运维笔记(四),CentOS 6.4安装Nginx 1,安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool op ...
- Linux系统运维笔记(三),设置IP和DNS
Linux系统运维笔记(三),设置IP和DNS 手工配置静态的IP地址 也就是手工配置IP地址.子网掩码.网关和DNS. vi /etc/sysconfig/network-scripts/ifcfg ...
- Linux系统运维笔记(二),Linux文件编辑命令
Linux系统运维笔记 Linux文件编辑命令 首先我们使用命令 vi filename 打开一个文件,这个时候进入到的是命令模式 接下来我们按i,然后键盘随便输入写内容. 然后按ESC重新进入到命令 ...
- Linux系统运维笔记(一),查看系统版本和设置系统时间
Linux系统运维笔记 查看系统版本和设置系统时间 查看系统版本 lsb_release -a (适用于所有的linux,包括Redhat.SuSE.Debian等发行版,但是在debian下要安装l ...
- Linux系统运维笔记(6),CentOS 7.6双网卡路由配置
Linux系统运维笔记(6),CentOS 7.6双网卡路由配置. 一,先确认系统版本: [root@localhost ~]# cat /etc/redhat-releaseCentOS Linux ...
随机推荐
- Linux探索之路1---CentOS入坑笔记整理
前言 上次跟运维去行方安装行内环境,发现linux命令还是不是很熟练.特别是用户权限分配以及vi下的快捷操作.于是决定在本地安装一个CentOS虚拟机,后面有时间就每天学习一点Linux常用命令. 作 ...
- Python之面向对象二
面向对象的三大特性: 继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 c ...
- centos7 yum相关的常用命令
[root@mini1 ~]# history |grep yum 40 yum repolist 42 cd /etc/yum.repos.d/ 49 yum clean all 50 yum re ...
- VirtualBox 局域网独立主机设置
网络地址转换(NAT)网卡用于分配虚拟机内网地址 桥接网卡用于分配母机内网地址 母机设置-网卡指定IP地址 常见坑有两个 坑1:记得把虚拟机防火墙关闭 坑2:虚拟机不可以ping主机,但母机可以pin ...
- 一 Django模型层简介(一)
模型 django提供了一个强大的orm(关系映射模型)系统. 模型包含了你要在数据库中创建的字段信息及对数据表的一些操作 使用模型 定义好模型后,要告诉django使用这些模型,你要做的就是在配置文 ...
- java中抽象类的概念
抽象类 public abstract class A{} 抽象类中可以定义抽象方法和普通方法:抽象方法指的是没有方法体的方法 public abtract void function();//抽象方 ...
- ionic轮播图
根据自带的滑动图,只需要添加加红字体 <ion-view view-title="活动详情" class="align-title-center"> ...
- [LeetCode] Binary Tree Tilt 二叉树的坡度
Given a binary tree, return the tilt of the whole tree. The tilt of a tree node is defined as the ab ...
- C#中string的相关方法
下面的方法一般都有很多重载形式,作为初学者的我先把我用过的记录下来吧...以后用到其他的可以一点点添加: 直接上例子吧.先定义两个字符串str1,str2(不要吐槽命名==) string str1, ...
- ML笔记:Classification: Logistic Regression