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 B@C 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:root@B 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