linux运维

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux运维相关的知识,希望对你有一定的参考价值。

             头有点大,也浪费了一些时间。明天过后缓冲一下

1、存储过程与触发器的区别?

答:(1)触发器主要是通过事件执行触发而被执行的,而存储过程可以通过存储过程名称而直接调用。(call/execute)

(2)触发器是一种特殊的存储过程,在表中进行insert、update、delete等DML语句时,数据库服务器就会自动执行触发器所定义的SQL语句

(3)触发器没有参数,而存储过程有参数。

(4)触发器最好不要返回数据,而存储过程可以返回数据


2、netfilter和iptables的区别?

答:(1)iptables是应用程序,它定义了一些规则,而netfilter是框架。

(2)iptables工作在用户空间,而netfilter工作在内核空间。

(3)netfilter是用来实现linux内核防火墙中的内核空间程序代码段,它要么被直接编译进内核,要么包含在模块中;而iptables是用来管理Netfilter防火墙的用户程序。


3、TCP报文格式字段,拥塞控制跟流量控制有何区别?(区别不好说,有点难,即使以前整理过的)

答:序列号、确认号、6个标志字段(FIN/ACK/RST/SYN/URG/PSH)、源端口号、目的端口号、校验和、数据偏移、窗口、紧急指针。

区别:(1)拥塞控制就是防止过多的数据注入到网络中引起链路过载,不要一下子发成百上千个的文件。它是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素。

(2)流量控制指端到端通信流量的控制,不要一下子来个几个G大小的大文件,对方忙过不来。流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。


4、文件A中10条记录,文件B有5条记录,找出A中有但B没有的记录。(一时不好办,以前好像做过)

答:cat A.txt B.txt |sort|uniq -d >chongfu.txt;cat A.txt chongfu.txt|sort |uniq -u

##思路就是先找出两个文件中相同的记录重定向到一个文件,再比较A文件中干掉相同的记录,就剩下A中唯一有的记录。


5、用户A想在它的linux工作站上以用户B的身份登录到C主机上查看D的UID是多少,怎么做?(听起来吓人一跳啊)

答:只要在A主机上执行:ssh -l B C id D 或者ssh [email protected] id D ##C相当于主机名或IP地址,-l代表登录log in 

 

6、不含主键的数据库中出现重复行数据,如何删除这些重复记录?并且重复记录保留一次。

答:select distinct * into tmp from table_name;  ##distinct去会去掉重复行,并且只保留一次。

drop table table_name; ##删除原来的表

select * into table_name from tmp; ##将不含重复的临时表插入到原来的新表中;

drop table tmp;删除临时表


7、上述问题中,如果遇到重复的行都删除呢?只要有重复就一条都不保留

mysql> select * from t1;..

+------+------+

| id   | namw |

+------+------+

|    1 | y    |

|    2 | h    |

|    2 | h    |

|    3 | h    |

|    3 | h    |

|    3 | h    |

+------+------+

答:思路就是group by,having count(*)>1的话,放入到一个临时表中;然后用exists比较两个表,删除原来基表相同的记录,返

mysql> create table tmp as select * from t1 group by id,name having count(*)>1;##在这里重复行只出现一次在tmp表中。

mysql> select * from tmp;

+------+------+

| id   | namw |

+------+------+

|    2 | h    |

|    3 | h    |

mysql> select * from t1 where exists (select * from tmp where tmp.id=t1.id and tmp.namw=t1.namw);#从t1表返回重复行

+------+------+

| id   | namw |

+------+------+

|    2 | h    |

|    2 | h    |

|    3 | h    |

|    3 | h    |

|    3 | h    |

+------+------+

mysql> delete from t1 where exists (select * from tmp where tmp.id=t1.id and tmp.namw=t1.namw)

##只把select换成delete即可。

mysql> select * from t1;

+------+------+

| id   | namw |

+------+------+

|    1 | y    |

+------+------+


8、一台linux主机由两块网卡eth0、eth1,IP分别为192.168.1.1和10.0.0.1,如何让这台服务器作为网关或者说代理服务器让内部的人可以上网?

答:(1)linux主机上:echo 1>/proc/sys/net/ipv4/ip_forward=1   ##开启路由管道

(2)iptables -t nat -A POSTROUTING -o eth1 -j MASQURADE  ##出口IP是动态的

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 10.0.0.1 ##出口IP是静态的

service iptables save

(3)在客户端的浏览器中设置代理即可访问Internet。


9、A公司内部的用户反映不能接收来自某新客户公司的邮件,A公司使用自己的Sendmail邮件服务器,你觉得是什么出了问题?

答:(1)当sendmail从任意MTA收到一封邮件时,首先检查收信地址.如果”@”后面的部分和本机文件/etc/mail/local-host-names里本地域的主机名匹配,则尝试将其作为本地邮件保存,无匹配项时则尝试将该邮件转发给外部MTA。主要用来防止垃圾邮件中的,比如公司只想接收或转发来自本地192.168.1.0/24的邮件,应该在文件中添加如下一行:192.168.1 RELAY

(2)/etc/mail/access.db是访问权限的数据文件,可以通过makemap命令将文本文件/etc/mail/access转换生成

(3)/etc/aliases用来实现邮件用户的别名(因为邮箱账号记录不方便),建立公司的邮件列表,邮件服务器的转发;newaliases 用来重新加载文件, 让sendmail读取该文件中的内容

综上分析,是/etc/mail/access出了问题,可以改为From:[email protected] OK ##OK是制约关键字,类似的还有RELAY、REJECT、DISGARD


10、内连接有哪几种?有何区别?

答:等值连接:返回两个表中符合“=”条件的所有数据,并且包括重复列。

非等值连接:返回两个表中符合"<>"条件的所有数据。

自然连接:在等值连接的基础上,去掉重复列即可。


11、存在表T(a,b,c,d),要根据字段c排序后取第21—30条记录显示,请给出sql?

答:select * from T order by c limit 20,10   ##初始记录行的偏移量是 0,20代表第21行起,我要连续记录10行,才能满足30行


12、MySQL中InnoDB引擎的行锁是通过加在什么上完成?(套路有点不同啊)

答:索引值。innodb表数据是索引组织表形式存放,但是对索引页加锁,采用位图方式实现。锁:提供共享资源的并发访问,保证数据的完整性、一致性;InnoDB与myisam的缓存机制不同,InnoDB既缓存数据块,又缓存索引值。


13、如何对linux分区?

答:假设硬盘8GB,我设置虚拟机的物理内存512MB(对于字符界面够了,对于x_windows图形界面不够用,但是可以随时调),真实机的物理内存是固定的(除非使用PAE地址扩展技术),/boot分区200MB,/swap分区为1G,保证为物理内存的2倍大小,/data分区1G,用于存放数据库文件,/root分区2GB,大概占总硬盘大小的25%,最后剩下的全部空间都划分给/home分区。


14、LAMP环境如何测试?对于Fastcgi的主机分离服务如何部署?(服务器分离是我一直想要思考的,三台主机实验还有点难度)

答:测试:对于apache来说,很好测试,浏览器页面访问该站点,返回我在网页根目录发布的index.html的相应内容即可。不好测试的是Mysql,必须要借助一个php语言写的动态页面,当我在前端页面输入数据并提交的时候,我的后台数据库服务器会自动添加内容,我只需要select 查询是否有更新即可。单独只测试PHP的话,写一个index.php,看浏览器访问能出现页面不。

分离:httpd——php—fpm(fastcgi process manager)——mysql,都各自拥有自己的IP地址。apahce需要取消注释mod_proxy模块,

在虚拟主机中添加ProxyRequests Off;关闭正向代理,ProxyPassMatch ^/(.*\.php)$fcgi://192.168.1.2:9000/PATH/$1 ,

在PHP代码中,使用$link = mysql_connect(‘172.16.2.6‘,‘root‘,‘magelinux‘);类似字段连接数据库,称为为ODBC。

参考文档:http://yao3800.blog.51cto.com/1522113/1705701


15、TCP什么时候会重传?如何判断一个TCP报文是重传报文呢?(这题拿来面试的话又要刷一批人啊)

答:(1)数据包传输过程中丢失;

(2)服务端收到了客户端的数据报文,但是不予响应,即不发送ACK;

(3)服务端响应过程的途中因为各种原因导致ACK报文丢失了。

判断:重传报文一般具有以下两个特征:一是TCP交互序列号突然下降(因为序列号本来是递增的,要重传以前的报文当然得下降),二是在TCP报头中的序列号、数据长度、应用数据等参数跟前面的某些TCP报文一致。

机制:发送方发送一个或连续好几个带有序列号的报文,在规定的计时器时间内,收到接收方的确认,再继续发送接下来的内容,否则,重传。

重传次数;cat /proc/sys/net/ipv4/tcy_synack_retries默认5次,如果次数到了,那么服务器会发送RESET表示重置终止该连接。

重传时间:比如windows第一次重传3秒,第二次重传前的计时器等待时间是第二次的2倍,linux不知道


16、有一个web服务,怎么监控它在提供服务?

答:(1)写一个脚本,每隔5分钟去ping它,测试这台主机的网络连通性,否则邮件报警

(2)在该脚本中,每隔1分钟用curl命令-I参数去测试,再使用awk命令过滤出200 OK字段,否则,邮件报警

(3)另一方面,那些监控工具如nagios很强大,不能提供服务它也会短信和邮件报警的。


17、微信发一个小视频,使用哪种协议?解释原因?(如果不提前思考,说原因还有点难)

答:毫无怀疑是UDP。原因:(1)UDP封装上层应用数据,添加的控制信息较为少,也不需要建立三次握手,直接交付给网络层处理,延迟那就小了点。另外,我们知道这些语音和视频流量对延迟和抖动要求比较高

(2)。。。(应该还有,待续想)


18、有一个文件里面包含许多单词,单词之间以空白分隔,找出单词‘Linux‘的前一个单词,或者后一个单词?(居然这么问,真难,还是网友厉害!)

echo "centos linuxcast redhat" >1.txt

答:前一个单词:cat 1.txt |tr " " "\n"|awk ‘/linux/{print VAR}{VAR=$0}‘  ### 利用变量VAR保存关键字所在行的上一行

当前行:cat 1.txt |tr " " "\n"|awk ‘/linux/{print $RS}‘ ##RS是当前行的内容

后一个单词:cat 1.txt |tr " " "\n"| awk ‘{if(A)print; A=0} /linux/{A=1}‘ ##找到linux关键字后,构造下一行的输出条件。



19、有一些冷热数据,对这些很冷的的数据,突然之间有很多用户访问,怎么提高磁盘的I/O能力(有点难哦)

答:(1)使用固态硬盘做RAID5阵列。

(2)从业务上减小某个时间段的访问量


20、如何查看linux的网卡流量,是字节还是比特?用什么查看网卡信息,网卡信息包括什么,以及配置文件在哪?(常考)

答:字节。 ethtool命令查看网卡信息,包括千兆还是百兆,双工还是半双工,自协商与否,接口的型号,

(1)sar -n DEV [刷新延迟] [刷新次数] ;(2)iptraf界面,如果说屏幕太小,需要按F11键


21、socket连接和http连接的区别。(这是真难了)

答:(1)Socket本身并不是协议,而是一个调用接口(API),套接字位于应用层与传输层之间的抽象层;http是应用层的无状态协议,用TCP来封装http报文。

(2)socket有IP地址和端口号组成,它是一种编程技术,提供网络通信的能力。http用来规定如何来传输一些诸如ASIII或者二进制类型的数据



22、路由器和交换机的区别?(放到linux运维这儿,是因为可能会涉及很浅的网络知识)   

答:(1)路由器工作在网络才呢过,交换机工作在数据链路层。(当然这里默认交换机是二层的)

(2)本身的工作机制不同。路由器拆开三层包头的IP地址,经过查路由表进行路由选择和存储转发。而交换机是拆开帧头查看目的MAC地址,如果MAC地址表有缓存记录则转发,否则广播出去。

(3)路由器划分广播域和冲突域,交换机只划分冲突域,但不划分广播域。

(4)从端口密度来说,路由器端口很少,交换机通常有16、24个不等。

(5)从通信范围来说,路由器是让不同网段进行通信的,而交换机是让本地网段通信的。


23、网站响应太慢,如何排错?(这种题是重点,重复了很多次)

答:首先判断是一个人的问题还是大面积的问题。自己要去测试下,看ping服务器的丢包率情况如何。

(1)用户带宽问题(2)服务器CPU利用率过高(3)DNS解析慢(4)网站出口带宽问题

(5)客户浏览器前端设计问题(6)网页代码质量问题(7)服务器遭遇攻击


24、如何让192.168.10.6 ping通172.16.100.6呢?(以前还真是以为不可能,看了马哥运维,真是颠覆了)

答:在172.16.100.6这台主机上设置iptable -t nat -A POSTROUTING -s 192.168.10.0/24 -j snat --to-source 172.16.100.6即可。


25、用什么工具或命令查看、测试系统的性能?(这个问题值得好好整理一下)

答:(1)磁盘性能:sysbench、iostat、iotop

(2)网络性能:ethtool、sar命令。ping连通性、traceroute测路径故障

(3)内存和swap情况:vmstat 刷新延迟 刷新次数、free -m,以及文件/proc/meminfo

(4)进程情况:top、ps、pstree;线程情况:htop、ps -T

(5)端口情况:netstat

(6)负载情况:uptime、top

(7)CPU情况:sar命令、top命令,以及文件/proc/cpuinfo

(8)日志情况:Awstats 、last命令,以及一些文件如系统日志、服务日志、安全日志

(9)磁盘情况:df -h和fisk -l

(10)并发处理能力:ab、httperf




以上是关于linux运维的主要内容,如果未能解决你的问题,请参考以下文章

linux运维面试常见问题

linux运维工程师都需要具备哪些技能

linux运维linux运维常用工具有哪些?

linux运维linux运维常用工具有哪些?

linux运维需要掌握什么知识?linux运维学习路线

linux运维工程师必须掌握哪些技能