linux运维(八)

    面了一家网络工程师,感受明天要拿Offer了,但这不是我从事的职位,这只是保底Offer,唉,好但愿有点底气哦!这几周劳资花了太多钱了,我又有了新的目标,明天不过一场小考验,检验我这几天的复习成果,其实我真正的目标,是下周的互联网金融。我太容易堕落了,必须找到目标
html


一、linux系统中如何获取pid为100的进程的全部TCP链接,请给出详细命令?(不看操做界面是作不出来的,固然有思路就行,就说awk条件判断)node

答:[root@192 1dir]# netstat -tnlp|awk '{print $7}'|awk -F "/" '$1==100{print $0}'mysql


二、Squid如何查看缓存命中率和清理缓存信息。linux

答:安装squid时自带的squidclient工具,suqid命中率很低的缘由多是请求的动态内容太多,而squid主要缓存静态内容。Web缓存典型的cache命中率在30%到60%之间,在这里端口是能够是3128也能够是80、nginx

squidclient -p 3128 mgr:infoweb

squidclient -p 3128 -m PURGE http://www.361way.com  #强制更新某个url,即清理某链接的squid算法

参考文档:http://www.361way.com/squid-percentage/1951.htmlsql


三、主机A须要给主机B传输一份10GB的数据,从应用层上能够作哪些传输优化?从TCP上能够作哪些传输优化?请分别列举优化措施。shell

答:(1)应用层上通过压缩再进行传输。数据库

(2)把10个GB大小的数据分红一个一个小段进行传输,这是为了流量控制,避免发送方发的太快了。

(3)TCP层上,首部控制信息上能不能加少点,好比不加填充选项,另外能把TCP改成UDP吗,由于UDP系统开销要小点,数据原本就大,否则传输太浪费时间了。


四、说一下linux 的启动流程(我特么多但愿能考这个题啊!)

答:(1)BIOS 加电自检,决定从网络、硬盘或者USB、光盘等方式启动

(2)读取MBR,加载bootloader,出现grub 菜单,加载内核

(3)启动第一个进程即init 进程,读取/etc/inittab,决定从哪一个运行级别启动

(4)侦测硬件,加载驱动程序,执行/etc/rc.sysint 系统初始化,好比网络、时区等

(5)运行一些某个级别下开机自启服务,启动内核模块

(6)读取/etc/rc.local,执行开机运行脚本

(7)miggety 程序运行/bin/login,出现用户登陆界面,通过身份认证后,用户方可以使用操做系统


五、尽量多的列出你知道的安装linux操做系统的方法。(妈蛋,这特么啥垃圾问题)

答:(1)PXE kickstart无人值守自动安装

(2)在光盘放入镜像,分区格式化等等。

(3)在虚拟机中克隆其余的操做系统


六、简述下传统机械硬盘和SSD的性能差别,并列举几种。(没见过固态硬盘、衡量一个硬盘主要是存储容量、读写能力、以及稳定性)

答:区别(1)机械硬盘的磁盘读写能力不如固态硬盘

(2)抗震性和稳定性,固态硬盘优于机械硬盘

(3)外观上,机械硬盘是用磁盘转的,磁头、扇区、柱面等寻道比较消耗系统资源,而固态硬盘就是个芯片似的

举例:机械:SAS、SCSI、IDE硬盘、SATA  固态硬盘:SSD


七、简述DHCP的获取IP地址的过程。(这我要好好整理下了)

答:四次报文的交互过程。服务器端UDP 67端口,客户端68端口。

(1)客户端广播发送一个DHCP discover报文,询问该网段中有谁能给我提供IP地址。

(2)全部本网段的DHCP服务器都能收到该offer报文,给客户端返回一个DHCP offer报文,依然是广播,由于客户端没有IP地址

(3)客户端选择第一个到达的DHCP offer报文,做为他的服务器,而后广播发送DHCP request报文,表示我选中这台服务器给我发IP了。

(4)被选中的那台服务器收到后,给客户端发送DHCP ACK报文,该报文中含有租约、主机所需IP、网关、子网掩码、以及DNS


八、ftp的主动模式和被动模式,各有什么使用场景,并简述两种模式下,ftp的链接创建过程?(使用场景有点新颖)

答:场景:主动模式用于下载,被动模式用于上传。由于下载必须由服务器主动传过来,而上传是客户端主动(服务端被动)传过来的。

注意:创建控制链接前都要创建TCP链接,随机端口N大于1024

(2)主动模式:客户端打开一个控制端口N,同时开启一个数据端口N+1,控制端口N 与服务端的21 端口创建链接;而后客户端发送Port命令告知对方服务端

个人数据端口是N+1,因而服务端用20 端口和客户端的数据端口N+1 创建通道,从而开始传输数据

(3)被动模式:也是客户端打开一个控制端口N,同时开启另外一个数据端口N+1,和服务端的21端口初始化创建控制链接。客户端发送PASV命令,询问对方数据端口P是否可用,若是可用,服务端打开P端口,返回ACK确认信息,而后客户端就去主动连服务端的数据通道端口了。


九、linux系统中如何获取pid为100的进程所监听的tcp端口,请给出详细命令。(问题很新颖呀)

答:netstat -antup |grep 100


十、须要抓取eth1网卡上从127.10.32.5发到本机8080端口的数据包,请列举你能想到的工具或者方法?并给出一个具体的方法的实现(详细命令或者代码)?

答:tcpdump tcp port 8080 -i eth1 and src host  127.10.32.5 ##tcpdump -i eth1 src net 127.0.0.0


十一、服务器交付业务方使用后,使用netstat命令发现有大量的time_wait链接,请简述time_wait链接存在的缘由?如何解决。(注意,缘由不是做用)

答:(1)缘由:通常线上出现大量time_wait的重要背景是业务使用了nginx代理。因为nginx使用短链接的方式和客户端大量交互,

(2)危害:若是是由服务器主动关闭客户端的链接,将致使服务器端存在大量的处于TIME_WAIT状态的socket,甚至比处于Established状态下的socket多的多,严重影响服务器的处理能力,甚至耗尽可用的socket,中止服务。另外,若是客户端的并发量持续很高,此时部分客户端就会显示链接不上。

(3)解决方法:发现系统存在大量TIME_WAIT状态的链接,经过调整内核参数解决,

vi /etc/sysctl.conf 编辑文件,加入如下内容:

net.ipv4.tcp_syncookies = 1  #表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少许SYN***,默认为0,表示关闭

net.ipv4.tcp_tw_reuse = 1  #表示开启重用。容许将TIME-WAIT sockets从新用于新的TCP链接,默认为0,表示关闭;

net.ipv4.tcp_tw_recycle = 1 #表示开启TCP链接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

net.ipv4.tcp_fin_timeout = 30 #修改系統默认的 TIMEOUT 时间,

而后执行 /sbin/sysctl -p 让参数生效


十二、短链接和长链接有什么区别?什么场景下用短链接?何时用长链接?

答:(1)区别:短链接是指通讯双方有数据交互时,就创建一个TCP链接,数据发送完成后,则断开此TCP链接;链接→数据传输→关闭链接;所谓长链接,指在一个TCP链接上能够连续发送多个数据包,在TCP链接维持期间,若是没有数据包发送,须要双方发检测包以维持此链接,通常须要本身作在线维持(不发生RST包和四次挥手)。 

(2)优势:短链接:管理起来比较简单,存在的链接都是有用的链接,不须要额外的控制手段,长链接减小系统开销,避免频繁三次握手。

(3)场景:银行或者电子商务使用短链接,使用完毕就断开。长链接多用于操做频繁(读写),点对点的通信,并且链接数不能太多状况,例如:数据库的链接用长链接,若是用短链接频繁的通讯会形成socket错误,并且频繁的socket 建立也是对资源的浪费。

参考文档:http://www.cnblogs.com/onlysun/p/4520553.html


1三、http的keepalive的做用是什么,有什么优缺点?它和tcp的keepalive有何区别?

答:(1)TCP的keep alive是检查当前TCP链接是否活着;HTTP的Keep-alive是要让一个TCP链接活久点。它们是不一样层次的概念。

(2)


1四、LVS的持久链接机制是什么?session绑定和session共享有何区别?如何理解会话保持时间Persistence?

答:(1)当一个客户端发起请求时,无论TCP链接有没有断开,只要这个客户访问过,咱们的LVS就会在内存缓冲区当中,未来自客户端第一次发起请求的链接IP地址和给他所选定的real server绑定映射关系,不管使用何种算法。当客户端再次访问时,直接查看这个会话表,若持久链接模板没有超时,则交给同一个real server处理。

(2)区别:session绑定就是在一台机器上,通常是调度器,映射客户端IP和服务端IP的关系,只要是你这个客户端,那么只要不超时,你客户端的请求都是后端某台固定的机器来处理的,session绑定就是持久链接。而sesion共享是针对多台服务器共享一个会话信息,同时也能避免session复制的开销。session绑定通常用在lvs的场景下,而session共享通常用在数据库服务器中,专门搭建一台Memcached来进行存储session。

(3)persistence:这个会话保持时间是最大无响应超时时间,也就是说,用户在操做动态页面时,若是50秒内没有执行任何操做,那么接下来的操做会被分发到另外的节点,可是若是用户一直在操做动态页面,则不受50秒的时间限制。(起初我还觉得每台服务器处理的固定时间呢,看来是由客户端影响的)

参考文档:http://wenku.baidu.com/view/f5ec0c65ee06eff9aef80779.html?from=search


1五、keepalived的工做原理机制是什么,并说明LVS+keepalived如何测试?

答:keepalived使用D类组播地址224.0.0.18进行心跳检测,keepalived使用vrrp协议进行通讯,在keepalived配置文件中生成两个VRRP实例,将两台物理服务器虚拟成一个逻辑服务器,并使用同一个虚拟IP(这里没有虚拟MAC,由于在Internet中的网关不是LVS调度器),在网络和系统正常状况下,主控调度器将客户端发往虚拟IP的请求进行分组转发,而备份调度器不作什么事,当主控调度器挂掉以后,备份调度器可以检测到,并进行故障的切换,备份机器开始替代成为主控机器,从而不影响客户端的访问,从而实现系统的高可用性。

测试:(1)停掉主控机器的keepalived或者直接把主控机器直接关机,在备份机器上查看系统日志/var/log/message,以及tcpdump vrrp,检测到VIP漂移到备份

机器上,而且成为Master角色。

(2)在浏览器访问VIP 80端口的时候,检测是否页面交替出现,则证实负载均衡的效果。而后停掉后端某一台真实web服务器,检测客户端是否依然能正常访问

某一个页面。


1六、Memcached工做原理,有何特色,做用、应用场景、端口号以及经常使用命令有哪些?(握草,这就难了,但是简历已经写了,本想凑个字数,现在添麻烦啊)

答:(1)内存管理机制中,SlabAllocator的基本原理是按照预先规定的数据块大小,将已分配的内存分割成特定长度的块(chunk),这里有一个增加因子的说法,并把尺寸相同的块分红一个组(class),当用户发来key-value存储请求时,memcached会计算key+value的大小,看看属于哪一个slab。肯定slab后看里面的是否有空闲chunk放置key+value,若是不够就再向系统申请一个内存页面page,若是已经到达了申请上限,则使用LRU算法移除已有的一些数据。

(2)特色:它是内存缓存服务器,自己没法决定缓存任何数据,一半依赖于客户端,一半依赖于服务端,惰性机制(过时了也不清理),基于LRU最近最少使用算法移除数据(有种说法是不删除数据,只是不显示给客户端),影响业务自己,但不影响元数据自己。缓存对象大小各不同,内存碎片问题是主要问题,没法根治。分布式缓存服务器(即多台Memcached服务器)彼此是不通讯的。

(3)做用:对查询频繁的数据进行缓存,从而减少后端数据库服务器的处理查询压力。

(4)场景:在Mysql一主多从架构中,对从服务器集群的查询缓存。

(5)端口号:11211 ,经过telnet localhost 11211进行测试

(6)六个经常使用命令:get set stats add delelte append等


memcached会优先使用已超时的记录的空间,但即便如此,也会发生追加新记录时空间不足的状况,此时就要使用名为 Least Recently Used(LRU)机制来分配空间。顾名思义,这是删除“最近最少使用”的记录的机制。所以,当memcached的内存空间不足时(没法从slab 

class 获取到新的空间时),就从最近未被使用的记录中搜索,并将其空间分配给新的记录。从缓存的实用角度来看,该模型十分理想


参考文档:http://blog.163.com/czg_e/blog/static/4610456120114755125970/

1七、Memcached如何优化?

答:以最大可能解决内存碎片问题。

1,-n 参数的设置,注意将此参数设置为1024能够整除的数(还要考虑48B的差值),不然余下来的部分就浪费了。

2,不要存储超过1m的数据。由于要拆成多个chunk,计算和时间成本都成倍增长。

3,善用stats命令查看memcached状态。

4,消灭eviction(被删除的数据)。形成eviction是由于内存不够,有三个思路:一是在CPU有余力的状况下开启压缩(PHP扩展);二是增长内存;三是调整 -f 参数,减小内存浪费。

5,调整业务代码,提升命中率。

6,缓存小数据。省带宽,省网络I/O时间,省内存。

7,根据业务特色,为数据尺寸区间小的业务分配专用的memcached实例。这样能够调小 -f 参数,使数据集中存在少数几个slab上,内存浪费较少。

参考文档:https://my.oschina.net/liuxd/blog/63129


1八、rsync的工做原理?工做方式,有何特色?

答:(1)rsync基于C/S客户服务器模式,rsync服务器打开873端口通道,等待客户端链接过来,若是口令认证经过,则容许同步到远程客户机,第一次同步的时候,把要同步的文件所有经过TCP/IP网络发送过去,第二次同步的时候,会经过某种算法比较已经存在的文件和将要同步的文件之间的差别,再把差别部分传输过去,从而提升传输的效率。

(2)本地模式:经过rsync命令进行推、拉操做。 daemon模式:结合inotify内核监控机制,写入一个rsync脚本进行触发式同步操做  crond模式:定时周期性的进行远程同步。

(3)特色:①增量备份②保持文件的属性不变③支持删除目的机器有而源机器没有有④能够指定某些文件不进行同步⑤支持传输前进行压缩,从而节省带宽。


1九、exec、source以及bash的区别。(真的很差理解)

答:(1)exec:在原进程中执行,可是同时会终止原进程。

(2)source:在原进程中执行,可是不产生子进程。

(3)bash:父进程会用fork方法建立一个子进程,shell script在子进程中执行。


20、磁盘分区的实质是什么?什么是主分区、扩展分区、逻辑分区,那它与/root分区,swap分区这些有什么联系吗?(说实话,这个是真难理解啊!磁道、扇区啥的更很差描述)

答:(1)分区实质:对磁盘的格式化。分区的好处或者说缘由:提升其可管理性,不一样的分区有不一样的做用。

(2)主分区:能够写入操做系统相关信息的分区,进行引导系统启动,至关于windows的C盘。扩展分区:扩展分区也是一个主分区,但不能直接使用,目的是容纳逻辑分区,能够说没有扩展分区就没有逻辑分区,逻辑分区的存在必须有扩展分区。用“咱们的面不能吃,可是面作成了饺子或者饼就能吃”来比喻。逻辑分区:相似于windows中的D/E/F盘,几块逻辑上独立的存储介质。

(3)最多4个主分区,最多1个扩展分区,能够。即1主、1扩、多逻辑;或者2主1扩、多逻辑;再或者3主、1扩、多逻辑;若是是4主,那么不可能有逻辑分区。

(4)硬盘的容量=主分区的容量+扩展分区的容量,扩展分区的容量=各个逻辑分区的容量之和。即硬盘=主分区+各个逻辑分区。

/             根目录         ext3        hda1    

/home     用户目录         ext3        hda2

/boot 引导分区 ext4 hda3

Swap     交换分区         swap        hda5  ##逻辑分区的设备名称号码由5开始,好比还有/var,/usr等



2一、格式化有何目的,是先格式化仍是先挂载?MBR有何做用?

答:(1)格式化的目的是写入文件系统。先格式化(mkfs命令)后挂载(mount),使用完毕后要卸载(umount)。

(2)磁道:就是磁盘上面的不少个同心圆;而每个磁道按512个字节为单位划分的弧段叫作扇区;柱面:从立体空间来看,相同编号的磁道称为柱面;簇:相邻磁道之间的扇区的空隙之处,

(3)MBR:主引导记录,位于第0柱面、第0磁道、第1个扇区,加载BootLoader,引导系统启动。


2二、简述https原理,创建通讯的过程。(貌似之前整理过,也记不住)

答:(1)客户端发送一个client hello报文,携带了客户端所支持的算法和随机数,以及SSL版本号。

(2)服务端收到client hello报文后,会返回给客户端Server hello报文,该Server hello报文中携带协商好的算法,以及公钥和CA证书。

(3)客户端验证证书的合法性,并使用服务端的公钥对报文进行加密,将加密后的报文发过去。

(4)服务端使用它本身的私钥进行解密,握手阶段基本完成。

参考文档:http://hittyt.iteye.com/blog/1618497


2三、说说一致性哈希算法。(这个不看视频彻底不懂)

答:(1)先构造一个长度为0~2^32(2的32次幂)个的整数环(又称:一致性Hash环),根据节点名称的Hash值将缓存服务器节点防置在这个Hash环中,如上图中的node1,node2等;

(2)根据须要缓存的数据的KEY计算获得其Hash值,如上图中右半部分的“键”,计算其Hash值后离node2很近;

(3)在Hash环上顺时针查找距离这个KEY的Hash值最近的缓存服务器节点,完成KEY到服务器的Hash映射查找,如上图中离右边这个键的Hash值最近的顺时针方向的服务器节点是node2,所以这个KEY会到node2中读取数据;

当缓存服务器集群须要扩容的时候,只须要将新加入的节点名称(如node5)的Hash值放入一致性Hash环中,因为KEY老是顺时针查找距离其最近的节点,所以新加入的节点只影响整个环中的一部分。以下图中所示,添加node5后,只影响右边逆时针方向的三个Key/Value对数据,只占整个Hash环中的一小部分。

参考文档:http://www.wtoutiao.com/p/231Kcfk.html


2四、http中301和302区别

答:(1)302重定向是暂时的重定向,搜索引擎会抓取新的内容而保留旧的网址。由于服务器返回302代码,搜索引擎认为新的网址只是暂时的。302多是URL劫持的一种表现。

(2)301重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向以后的网址。

参考文档:http://blog.csdn.net/xlinsist/article/details/41987973


2五、加密算法怎么实现,公钥私钥有什么区别,加密解密流程?(考到这些安全问题,真心很差回答,不过确实很重要)

答:(1)公钥和私钥区别:公钥即公开的密钥,你们都知道的密钥,私钥即私有的密钥,只有他本身知道。

(2)第一种加密流程:Bob将他的公开密钥传送给Alice。Alice用Bob的公开密钥加密她的消息,而后传送给Bob。Bob用他的私人密钥解密Alice的消息。

第二种加密流程:Alice用她的私人密钥对文件加密,从而对文件签名。Alice将签名的文件传送给Bob。Bob用Alice的公钥解密文件,从而验证签名。

(3)加密算法的实现:使用加密密钥对原始明文进行一系列置换或者移位操做,最后获得密文的过程。这样即便非法用户得到加密过的资料,也没法理解其真实含义。

参考文档:http://blog.sina.com.cn/s/blog_45497dfa0100y0k5.html


2六、http和https有何区别?

答:(1) HTTP协议 的URL以http://开头,而HTTPS协议的URL以https:// 开头。

(2)HTTP 是不安全的,而 HTTPS 是安全的。

(3)HTTP 标准端口是80 ,而 HTTPS 的标准端口是443。

(4)在OSI 网络模型中,HTTP工做于应用层,而SSL工做在应用层和传输层之间的抽象层。

(5) HTTP 没法对传输数据进行加密,而HTTPS 对传输的数据进行加密。

(6)HTTP无需证书,而HTTPS 须要CA机构的颁发的SSL证书。


2七、linux系统下如何查看CPU的总核数?(核数就是一块CPU上面能处理数据的芯片组的数量.)

答:总核数=物理CPU的个数*每颗CPU的核数

查看物理CPU的个数:cat /proc/cpuinfo|grep "physical id"

查看每颗物理CPU的核数:cat /proc/cpuinfo|grep "cpu cores"

逻辑CPU的个数=总核心数*超线程数:即cat /proc/cpuinfo|grep "processor"

查看CPU的型号:cat /proc/cpuinfo|grep name 


2八、假如如今有个文本,即左边是随机字母,右边是随机数字。(难,awk最TM难用了)

a  1

b  3

c  2

d  7

b  5

a  3 

g  2

f  6

d  9

现要求写个脚本使其输出格式为,即将相同的字母后面的数字累加在一块儿,按字母的顺序输出。

a  4

b  8

c  2

d  16

f  6

g  2

答:awk '{a[$1]+=$2}END{for(i in a){print i,a[i]}}' file.txt


2九、有哪些因素可能致使mysql主从不一样步,若是主从不一样步,报错了,怎么恢复?

答:(1)版本不一致,特别是高版本是主,低版本为从的状况下,主数据库上面支持的功能,从数据库上面不支持该功能。

(2)自己就是异步复制,网络延迟形成的

(3)主从两台机器的负载不一致,当中任何一台机器的负载很高,忙不过来,致使其中的任何一个线程出现资源不足,都将出现主从不一致的状况。

(4)主库重启致使从库数据不一样步,并且主键冲突

(5)Binlog日志格式设置的很差。

解决:锁住Master表,(主库通常不能停啊,TMD注意了,别SB了),停掉slave,而后从新change master_to进行同步,最后启动slave,若是报错,就执行

命令set global sql_slave_skip_counter=1用来跳过错误进行同步。

参考文档:http://storysky.blog.51cto.com/628458/259280/


30、生产场景,一主多从环境,某一台从库宕机,如今又修好了,请问你如何恢复主从同步?若是主库宕机又修好了,那又怎么恢复主从同步过程?(没让说原理我就不哭了,这个问题必须思考)

答:从库宕机:若是只是某一台从机器宕机了,那么查询的压力就分配在其余机器上,等这台机器修复好了,在其余从库或者主库mysqldump备份,在scp远程同步过来数据,从新导入.sql文件,而后stop slave,change master to,start slave 等

主库宕机:从新提高slave1做为主控机器,其余salve从slave1中复制数据,若是原来的主库修好了,那么把他加入从库集群队列中。

参考文档:http://ucode.blog.51cto.com/10837891/1747078/

相关文章
相关标签/搜索