搜狐Linux运维工程师面试真题-答案

搜索了许多linux面试的题目,但是许多都没有答案,本着分享交流的态度,把搜狐Linux运维工程师面试真题做了,答案可以有不严谨的地方,请多多指教! 题目来自: https://blog.csdn.net/Ki8Qzvka6Gz4n450m/article/details/79119677

搜狐对Linux运维工程师招聘岗位的面试题: ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~

mysql> show slave status\G #查看是否都为yes Slave_IO_Running Slave_SQL_Running 

~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ mysql的innodb如何定位锁问题: 在使用 show engine innodb status检查引擎状态时,发现了死锁问题: 在5.5中,information_schema库中增加了三个关于锁的表(MEMORY引擎):innodb_trx ## 当前运行的所有事务innodb_locks ## 当前出现的锁innodb_lock_waits ## 锁等待的对应关系

mysql如何减少主从复制延迟: 如果延迟比较大,就先确认以下几个因素:

~~~~~题目和答案分界线~~~~~ 第一问,三次握手: 1.建立连接时,客户端发送SYN包到服务器,并进入SYN_SEND状态,等待服务器确认; 2.服务器收到syn包,必须确认客户的SYN,同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态; 3.客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 ~~~~~~~~~ 第二问,TCP连接断开,第四次断开,主动断开的一方进入TIME_WAIT状态。 扩充: 四次断开: 1、客户端发送FIN包,进入FIN_WAIT_1状态。2、 服务器端收到FIN包,发送ACK表示确认,进入CLOSE_WAIT状态。客户端收到FIN的确认报文段,进入FIN_WAIT_2状态。3、服务器端发送FIN报文端,进入LAST_ACK状态。4、 客户端收到FIN报文端,发送FIN的ACK,同时进入TIME_WAIT状态,启动TIME_WAIT定时器,超时时间设为2MSL(最大报文段生存时间)。5、 服务器端收到FIN的ACK,进入CLOSED状态。6、客户端在2MSL时间内没收到对端的任何响应,进入CLOSED状态。

为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态? 答:四次断开看似很可靠,四个报文都发送完毕,直接进入CLOSE状态了,但是假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。 ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ 跨站脚本攻击(也称为XSS):指利用网站漏洞从用户那里恶意盗取信息。用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息。

~~~~~题目和答案分界线~~~~~ 使用分布式存储,如mfs、hadoop等 ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ 一、 在已知MYSQL数据库的ROOT用户密码的情况下,修改密码的方法: 1,shell环境下: ]#mysqladmin –u root –p password “新密码” 回车后要求输入旧密码 2,mysql>环境下: 2.1

mysql>Update mysql.user set password=password(‘新密码’) where user=’root’ and host='localhost'; mysql>flush privileges; 

2.2 mysql>grant all on *.* to root@’localhost’ identified by ‘新密码’; 二、 如查忘记了mysql数据库的ROOT用户的密码:

]#systemctl stop mysqld ]#vim /etc/my.cnf // [mysqld]下面添加skip-grant-table(修改完后在注释) ]#systemctl restart mysqld ]#mysql -u root Mysql> update mysql.user set password=password(‘新密码’) where user="root" and host="localhost"; Mysql> flush privileges; ]#vim /etc/my.cnf // [mysqld]下面注销skip-grant-table ]#systemctl restart mysqld 

~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~

[root@luc ~]# find /data -type f -name "*".txt | xargs sed -i 's/magedu/magestudy/g' 

注:| 和xargs区别:echo ‘–help’ | cat 输出–help echo ‘–help’ | xargs cat 输出为cat --help的结果 思考:把/data目录和子目录下以扩展名 .txt 文件名中包含magedu替换成magestudy

[root@luc ~] # find /data -type f -name "*magedu*.txt" | awk -F "magedu" '{print "mv " $1"magedu"$2 " " $1"magesudy"$2}' |sh 

注:-F "magedu" 是将magedu当作分隔符 |sh 是将前面的输出的内容当作命令执行。 ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~

[root@luc ~] # mkdir -p /data/sohu && touch /data/sohu/sodu.txt [root@luc ~] # echo "inet addr : 10.1.0.8 Bcast : 10.1.0.255 Mask : 255.255.255.1" > /data/sohu/magedu.txt 

注:系统命令的考察,mkdir touch -p或–parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录; "&&" 表示前一条命令执行成功时,才执行后一条命令 。 ">" 重定向输入,如果输入的文件不存在,会创建。 ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~

#! /usr/bin/bash for i in {1..100} do let sum+=$i done echo "$sum" 

注:方法很多,也可以用while语句,上面脚本中的let sum+=$i 可以修改成((sum+=i)) ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ 如果访问量不大,可以装在同一台主机上。

]#ss -anptu | grep :80 //httpd监听端口80 ]# ps -C httpd ]# ss -anptu | grep :3306 //mysqld监听端口3306 ]# ps -C mysqld 

~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ httpd配置虚拟主机:(virthost.conf,为配置文件名,可以取任意名字,但后缀名必须为.conf)

[root@luc ~]# yum -y install httpd [root@luc ~]# mkdir /var/www/sohu1 [root@luc ~]# mkdir /var/www/sohu2 [root@luc ~]# mkdir /var/www/test1 [root@luc ~]# mkdir /var/www/test2 [root@luc ~]# echo "sohu1" > /var/www/sohu1/index.html [root@luc ~]# echo "sohu2" > /var/www/sohu2/index.html [root@luc ~]# echo "test1" > /var/www/test1/index.html [root@luc ~]# echo "test2" > /var/www/test2/index.html [root@luc ~]# vim /etc/httpd/conf.d/virthost.conf <VirtualHost *:80> ServerName www.sohu1.net DocumentRoot /var/www/sohu1 </VirtualHost> <VirtualHost *:80> ServerName www.sohu2.net DocumentRoot /var/www/sohu2 </VirtualHost> <VirtualHost *:80> ServerName test1.magedu.net DocumentRoot /var/www/test1 </VirtualHost> <VirtualHost *:80> ServerName test2.magedu.net DocumentRoot /var/www/test2 </VirtualHost> [root@luc ~]# systemctl restart httpd 

nginx配置虚拟主机:(先停systemctl stop httpd,httpd释放80端口)

[root@luc nginx]# tar xf nginx-1.8.0.tar.gz [root@luc ~]# cd /root/nginx-1.8.0/ [root@luc nginx-1.8.0]## ./configure --prefix=/usr/local/nginx --with-http_ssl_module [root@luc nginx-1.8.0]## make [root@luc nginx-1.8.0]## make install [root@luc ~]# vim /usr/local/nginx/conf/nginx.conf server { listen 80; server_name www.sohu1.net; root sohu1; index index.html index.htm; } server { listen 80; server_name www.sohu2.net; root sohu2; index index.html index.htm; } server { listen 80; server_name test1.magedu.net; root test1; index index.html index.htm; } server { listen 80; server_name test2.magedu.net; root test2; index index.html index.htm; } [root@luc ~]# mkdir /usr/local/nginx/sohu1 [root@luc ~]# mkdir /usr/local/nginx/sohu2 [root@luc ~]# mkdir /usr/local/nginx/test1 [root@luc ~]# mkdir /usr/local/nginx/test2 [root@luc ~]# echo "sohu1" > /usr/local/nginx/sohu1/index.html [root@luc ~]# echo "sohu2" > /usr/local/nginx/sohu2/index.html [root@luc ~]# echo "test1" > /usr/local/nginx/test1/index.html [root@luc ~]# echo "test2" > /usr/local/nginx/test2/index.html [root@luc ~]# /usr/local/nginx/sbin/nginx 

注:以上内容均是实验测试成功,需要关闭selinux和firewall。 查看服务是否起来可以用命令ss或netstat

[root@luc ~]# ss -anptu | grep :80 tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=23716,fd=6),("nginx",pid=23715,fd=6)) 

/usr/local/nginx/conf/nginx.conf 配置文件添加server是在http{}内添加,如果位置放的不正确,服务起不来。 ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~

[root@luc ~]# cat /var/log/httpd/access_log | awk '{a[$1]++}END{for(i in a){print a[i],i}}' |sort -rn | head -10 [root@luc ~]# cat /var/log/httpd/access_log | awk '{print $1}' |sort -rn |uniq -c | head -10 

注:linux中实用工具awk,sort,uniq,head的使用 方法1:数组使用,类似于键值对,键是ip,值是叠加的数字(ip出现的次数) 方法2:主要是用uniq -c 去除重复多余的ip(去重)并统计数量 ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ IP连接数: ]# netstat -n | awk '/^tcp/{print $4}' | awk -F : '{print $1}'|sort|uniq -c 查看当前磁盘IO: iostat 查看当前网络IO: iotop ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ 方法1:(利用tr工具和/dev/urandom文件获取密码)

 #! /usr/bin/bash for i in {1..20} do pass_tmp=`tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 5` useradd user$i echo "user$pass_tmp" | passwd --stdin user$i echo "user$i user$pass_tmp " >> /root/.user_pass done 

方法2:(利用字符串切片和求余方式获取随机密码)

#! /usr/bin/bash pass_gen(){ key='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' num=${#key} pass=“” for i in {1..5} do index=$[RANDOM%num] pass=$pass${key:index:1} done echo $pass } for i in {1..20} do useradd user$i p=`pass_gen` echo "user$p" | passwd --stdin user$i echo "user$i user$p " >> /root/.user_pass done 

~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~

方法一: 把/proc/sys/net/netfilter/nf_conntrack_max参数设置更大,连接跟踪表被填满以后,就会发生丢包,导致网络不稳定。当这张表满了,就会在日志里面写入该信息。

[root@luc ~]# sysctl -w net.nf_conntrack_max=100000 //或者修改更大 [root@luc ~]# cat /proc/sys/net/netfilter/nf_conntrack_max 

方法二: 不使用ip_conntrack,nf_conntrack_ipv4,xt_state模块 方法三: 使用 raw 表,不跟踪连接

 [root@luc ~]# iptables -A FORWARD -m state --state UNTRACKED -j ACCEPT [root@luc ~]# iptables -t raw -A PREROUTING -p tcp -m multiport --dport 80,81,82 -j NOTRACK [root@luc ~]# iptables -t raw -A PREROUTING -p tcp -m multiport --sport 80,81,82 -j NOTRACK 

ip-contrack详细解释链接: http://www.cnblogs.com/mydomain/archive/2013/05/19/3087153.html https://testerhome.com/topics/7509 ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ Varnish 高性能、开源的反向代理服务器和内存缓存服务器。 优点:

~~~~~题目和答案分界线~~~~~ 当 DNS 客户机需要查询程序中使用的名称时,它会查询本地DNS 服务器来解析该名称。客户机发送的每条查询消息都包括3条信息,以指定服务器应回答的问题。 ● 指定的 DNS 域名,表示为完全合格的域名 (FQDN) 。 ● 指定的查询类型,它可根据类型指定资源记录,或作为查询操作的专门类型。 ● DNS域名的指定类别。 对于DNS 服务器,它始终应指定为Internet 类别。例如,指定的名称可以是计算机的完全合格的域名,如im.qq.com,并且指定的查询类型用于通过该名称搜索地址资源记录。 DNS 查询以各种不同的方式进行解析。客户机有时也可通过使用从以前查询获得的缓存信息就地应答查询。DNS 服务器可使用其自身的资源记录信息缓存来应答查询,也可代表请求客户机来查询或联系其他DNS 服务器,以完全解析该名称,并随后将应答返回至客户机。这个过程称为递归。 另外,客户机自己也可尝试联系其他的 DNS 服务器来解析名称。如果客户机这么做,它会使用基于服务器应答的独立和附加的查询,该过程称作迭代,即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服务器之间就是的交互查询就是迭代查询。 ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ 一、NAT模式(VS-NAT) 原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,并发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的原IP地址改为自己的IP,将目的地址改为客户端IP地址即可期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器。 二、IP隧道模式(VS-TUN) 原理:首先要知道,互联网上的大多Internet服务的请求包很短小,而应答包通常很大。那么隧道模式就是,把客户端发来的数据包,封装一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTUNNEL协议所以,在RS的内核中,必须编译支持IPTUNNEL这个选项。 三、直接路由模式(VS-DR) 原理:负载均衡器和RS都使用同一个IP对外服务但只有DR对ARP请求进行响应,所有RS对本身这个IP的ARP请求保持静默也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC(因为IP一致)并将请求分发给这台RS这时RS收到这个数据包,处理完成之后,由于IP一致,可以直接将数据返给客户,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端由于负载均衡器要对二层包头进行改换,所以负载均衡器和RS之间必须在一个广播域,也可以简单的理解为在同一台交换机上。 ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ Nginx的优点是: 1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构,它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一,Nginx单凭这点可利用的场合就远多于LVS了。 2、Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势之一;相反LVS对网络稳定性依赖比较大,这点本人深有体会; 3、Nginx安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来。LVS的配置、测试就要花比较长的时间了,LVS对网络依赖比较大。 3、可以承担高负载压力且稳定,在硬件不差的情况下一般能支撑几万次的并发量,负载度比LVS相对小些。 4、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不支持url来检测。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,Nginx会把上传切到另一台服务器重新处理,而LVS就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而不满。 5、Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。LNMP也是近几年非常流行的web架构,在高流量的环境中稳定性也很好。 6、Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,可以考虑用其作为反向代理加速器。 7、Nginx可作为中层反向代理使用,这一层面Nginx基本上无对手,唯一可以对比Nginx的就只有lighttpd了,不过lighttpd目前还没有做到Nginx完全的功能,配置也不那么清晰易读,社区资料也远远没Nginx活跃。 8、Nginx也可作为静态网页和图片服务器,这方面的性能也无对手。还有Nginx社区非常活跃,第三方模块也很多。 Nginx的缺点是: 1、Nginx仅能支持http、https和Email协议,这样就在适用范围上面小些,这个是它的缺点。 2、对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。不支持Session的直接保持,但能通过ip_hash来解决。 LVS LVS:使用Linux内核集群实现一个高性能、高可用的负载均衡服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。 LVS的优点是: 1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。 2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。 3、工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案,如LVS+Keepalived,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。 4、无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。 5、应用范围比较广,因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等。 LVS的缺点是: 1、软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。 2、如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了,特别后面有WindowsServer的机器的话,如果实施及配置还有维护过程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了。 HAProxy HAProxy的特点是: 1、HAProxy也是支持虚拟主机的。 2、HAProxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引导;同时支持通过获取指定的url来检测后端服务器的状态。 3、HAProxy跟LVS类似,本身就只是一款负载均衡软件;单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。 4、HAProxy支持TCP协议的负载均衡转发,可以对MySQL读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,大家可以LVS+Keepalived对MySQL主从做负载均衡。 5、HAProxy负载均衡策略非常多,HAProxy的负载均衡算法现在具体有如下8种: ①roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的; ② static-rr,表示根据权重,建议关注; ③leastconn,表示最少连接者先处理,建议关注; ④ source,表示根据请求源IP,这个跟Nginx的IP_hash机制类似,我们用其作为解决session问题的一种方法,建议关注; ⑤ri,表示根据请求的URI; ⑥rl_param,表示根据请求的URl参数’balance url_param’ requires an URL parameter name; ⑦hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求; ⑧rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。 ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ 查看CPU:uptime或者top, w 查看内存:free -h 查看磁盘:df -h ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ ]# watch -n 1 "/sbin/ifconfig eth0 | grep bytes" ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ 1.host模式 众所周知,Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,NetworkNamespace隔离网络等。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。 例如,我们在10.10.101.105/24的机器上用host模式启动一个含有web应用的Docker容器,监听tcp80端口。当我们在容器中执行任何类似ifconfig命令查看网络环境时,看到的都是宿主机上的信息。而外界访问容器中的应用,则直接使用10.10.101.105:80即可,不用任何NAT转换,就如直接跑在宿主机中一样。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。 2.container模式 在理解了host模式后,这个模式也就好理解了。这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。 3.none模式 这个模式和前两个不同。在这种模式下,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。 4.bridge模式 bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上。下面着重介绍一下此模式。host模式使用Docker run时使用–net=host指定 Docker使用的网络实际上和宿主机一样,在容器内看到的网卡ip是宿主机上的ip。 扩充: docker常用命令

~~~~~题目和答案分界线~~~~~ hearbeat keepalived ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ mysqldump工具 Mysqldump是mysql自带的备份工具,目录在bin目录下面:/usr/local/mysql/bin/mysqldump,支持基于innodb的热备份。但是由于是逻辑备份,所以速度不是很快,适合备份数据比较小的场景。Mysqldump完全备份+二进制日志可以实现基于时间点的恢复。 基于LVM快照备份 在物理备份中,有基于文件系统的物理备份(LVM的快照),也可以直接用tar之类的命令对整个数据库目录进行打包备份,但是这些只能进行泠备份,不同的存储引擎备份的也不一样,myisam自动备份到表级别,而innodb不开启独立表空间的话只能备份整个数据库。 tar包备份 percona提供的xtrabackup工具 支持innodb的物理热备份,支持完全备份,增量备份,而且速度非常快,支持innodb存储引起的数据在不同数据库之间迁移,支持复制模式下的从机备份恢复备份恢复,为了让xtrabackup支持更多的功能扩展,可以设立独立表空间,打开 innodb_file_per_table功能,启用之后可以支持单独的表备份。 ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ 简单说: AWK:过滤,适合按列(域)操作, SED:编辑,适合按行操作 共同点:逐行处理 (grep 用于搜索某些字符串,显示整行; awk比grep搜索的更精细,可以搜索到行的某个字段。)

详细解释: AWK:通过指定分隔符将一行(一条记录)划分为多个字段,以字段为单位处理文本。 格式:awk [选项] ‘BEGIN{指令} 条件{指令} END{指令}’ 文件 选项: -F 指定分隔符 , -v 变量名=值 条件: /正则/ 对整行匹配 模糊匹配 $1~/正则/ 匹配 对第一列 $1!~/正则/ 不匹配 == != > >= < <= 精确匹配(字符,数字) && || $1=="root" && $7~/bash/ +-*/% ++ — += *= /= 指令: print $1 $2 NF NR x++

SED:是一个非交互性文本编辑器。 格式:sed 【选项】 ‘条件指令’ 文件 选项:-i 修改源文件 ,-n 屏蔽默认输出,-r 支持扩展正则 条件:没有(所有行),行号3p;5p,/正则/ 指令:p 打印print,d 删除delete,s 替换substitution s/old/new/ 三个分隔符不能少 a 追加append,i 插入insert,c 替换change ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ CDN加速简单的来说,就是把原服务器上数据复制到其他服务器上,用户访问时,那台服务器近访问到的就是那台服务器上的数据。CDN加速优点是成本低,速度快。可以用CDN best的CDN进行加速,免费,可部署私有,公有CDN系统。可以实现宕机检测,自动切换ip,分线路,分组解析。也就是 CDN加速的主要作用就是保证网站的正常访问,及加快网站访问速度和响应速度,防止网站因黑客攻击,DNS解析劫持故障等导致的网站服务器的宕机状况的出现。 ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。 虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。 keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。 Keepalived健康检查方式配置 HTTP_GET|SSL_GET HTTP_GET | SSL_GET { url { path /# HTTP/SSL 检查的url可以是多个 digest <STRING> # HTTP/SSL 检查后的摘要信息用工具genhash生成 status_code 200# HTTP/SSL 检查返回的状态码 } connect_port 80 # 连接端口 bindto<IPADD> connect_timeout 3 # 连接超时时间 nb_get_retry 3 # 重连次数 delay_before_retry 2 #连接间隔时间 } ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ 1024M ~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ 常用命令: 查看CPU信息:cat/proc/cpuinfo ; lscpu 查看内存信息:cat /proc/meminfo ; free -h ; vmstat 查看系统体系结构:uname -a 查看系统硬盘信息和使用情况:fdisk – l ; df -h 查看系统挂载情况:lsblk 查看网卡分配ip和流量使用情况:ifconfig

不常用: 查看主板的序列号: dmidecode | grep -i ’serialnumber’ 查看板卡信息:cat /proc/pci ; lspci 查看显卡/声卡信息:lspci |grep-i ‘VGA’ 查看网卡信息:lspci | grep -i ‘eth’ 查看键盘和鼠标:cat /proc/bus/input/devices 查看各设备的中断请求(IRQ):cat /proc/interrupts

~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~题目和答案分界线~~~~~ 方法1:(判断文件和判断文件大小分开)

#! /usr/bin/bash for i in `ls /opt` do if test -f $i ; then if test `ls -l /opt/$i | awk '{print $5}'` -gt 15000 ;then mv /opt/$i /tmp fi fi done 

方法2:(判断文件和判断大小在同一条命令里) 注:grep -v ^d 不能改成grep -v ^- 因为 ls -l 显示的第一个字段的首个字母不一定是-,还可能是l链接等文件类型 。

#! /usr/bin/bash for i in `ls -l /opt |grep -v ^d |awk '{if($5>15000){print $9}}'` do mv /opt/$i /tmp done 

扩展: 用find命令可以查找/opt整个目录下包含子目录下的所有于15k的文件, 而上面两种方法用的是ls -l命令,仅仅是对/opt目录下(不包括子目录)的文件操作。

[root@luc ~]# find /opt -type f -size +15k -exec mv {} /tmp \; 

~~~~~~~~~~~~~~~~~~~~~~~~~ 31、写过哪些 Python 脚本?(脚本7) 用python写测试192.168.1.0/24网段的哪些主机在线,哪些不在线。

#! /usr/bin/python # coding:utf-8 import subprocess import threading # define function myping def myping(ip): x = subprocess.call('ping -i0.1 -w1 -c2 %s &>/dev/null' % ip, shell=True) if x == 0: print "%s is up" % ip else: print "%s is down" % ip l = ['192.168.1.%d' % i for i in range(1, 255)] for i in l: t = threading.Thread(target=myping, args=[i]) t.start() 

网络参看资料: http://www.magedu.com/73536.html

原文链接:https://blog.51cto.com/u_13667098/2097632

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享