设为首页 收藏本站
查看: 4988|回复: 0

[经验分享] Linux面试题,面试总结的

[复制链接]

尚未签到

发表于 2017-6-25 10:29:04 | 显示全部楼层 |阅读模式
1、linux 开机流程:
BIOS开机自检->MBR引导->加载GRUB->加载Linux内核->运行init进程,读取/etc/inittab ->执行/etc/rc.d/rc.sysinit脚本 ->
执行/etc/rc.d/rc脚本,运行/etc/rc.d/rcX.d中的脚本,X表示inittab中指定的运行级别 ->执行/etc/rc.d/rc.local脚本 ->
启动mingetty进程 ->等待用户登录

2、TCP三次握手、四次挥手:
第一次握手--->建立连接时,客户端发送syn包(syn=j)到服务器,并进入syn_send状态,等待服务器确认;
第二次握手--->服务器收到syn包,必须确认客户端的syn(ack=j+1),同时自己也发送一个syn包(syn=k),
即syn+ack包,此时的服务器进入syn_recv状态;
第三次握手--->客户端收到服务器发送的syn+ack包,向服务器发送ack(ack=k+1),此包发送完毕,客户端和服务端进入了established状态 ,X表示inittab中指定的运行级别
完三次握手,客户端与服务器开始传送数据。
第一次挥手--->客户端发送一个FIN,用来关闭客户端到服务器的数据传输,客户端进入FIN_WAIT_1状态;
第二次挥手--->服务器收到FIN后,发送一个ACK包给客户端,确认序列号为收到序列号+1,服务器进入CLOSE_WAIT状态;
第三次挥手--->服务器发送一个FIN,用来关闭服务器到客户端的数据传输,服务器进入LAST_ACK状态;
第四次挥手--->客户端收到个 FIN,客户端进入TIME_WAIT状态,接着发送一个ACK给服务器,确认序列号+1
服务器进入CLOSE状态,完成四次挥手。
3、包过滤防火墙与代理应用防火墙有什么区别,能列举几种相应的产品吗?
包过滤防火墙工作在网络层,它只对IP包的源地址、目标地址及相应端口进行处理,因此速度快,能够处理的并发连接比较多,
缺点就是对应用层的攻击能力无能为力。
代理服务器防火墙工作在应用层,它将收到的IP包还原成高层协议的通讯数据,比如http连接信息,因此能够对基于高层协议的攻击
进行拦截。缺点就是处理速度比较慢,能够处理的并发连接比较少。
代理防火墙:天融信 GFW 4000
包过滤防火墙:华为 NE 16E
4、什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?
NAT(Network Address Translation,网络地址转换)是将IP数据包头中的IP地址转换为另一个IP地址的过程,
分为DNAT(目的网络地址转换)和SNAT(源网络地址转换)。
SNAT 主要是用于内网主机通过路由器或网关访问外网
DNAT 将外部地址和端口的访问映射到内部地址和端口
5、如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0
IPTABLES -t NAT -A PREROUTING  -d 192.168.16.1 -p tcp --dport 80 -j DNAT --to 192.168.16.1:8080
6、在11 月份内,每天的早上6 点到12 点中,每隔2 小时执行一次/usr/bin/httpd.sh 怎么实现:
0 6-12/2  * 11 * /usr/bin/httpd.sh
7、简述raid0 raid1 raid5 三种工作模式的工作原理及特点。
RAID 0:连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据 传输率,但它没有数据冗余,因此并不能算是真正的RAID 结构。
RAID 0 只是单纯地提高 性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。因此,RAID 0 不能应用于数据安全性要求高的场合。
RAID1:它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1 可以提高读取性能。
RAID1 是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时, 系统可以自动切换到镜像磁盘上读写 ,而不需要重组失效的数据。
简单来说就是:镜象结 构,类似于备份模式,一个数据被复制到两块硬盘上。
RAID10:高可靠性与高效磁盘结构一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充。主要用于容量不大,但要求速度和差错控制的数据库中。
RAID5:分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于所有磁盘上,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。
支持一块盘掉线后仍然正常运行。
8、计划每星期天早8点服务器定时发送一封内容为:test的邮件。发信人:user1@ab.com 收信人:test1@example.com,如何实现?
crontab -e
00 08 * * 7  echo "test" | /bin/mail -r user1@ab.com -s test test1@example.com &>/dev/null
9、用ls 查看目录或者文件时,第二列的数值表示什么意思?如果一个目录的这列的值为3,那么这个3是如何得到的?
第二列的数值表示硬链接数,默认情况下,新建一个目录,该目录就会包含一个指向自身的目录“.”和指向其上一级目录的父目录“..”,该数值是2,
若分别在新建的目录里建一个文件和一个目录,那么再次查询时,就会发现该数值变为了3,由此类推..
10、如果设置 umask 为 001 , 那么用户默认创建的目录和文件的权限是什么样子的?
目录:776  文件:666
11、出于安全考虑,如何实现让别人ping不通你的在线的服务器。
有多种方法
防火墙上用ACL封ICMP协议或者在服务器上使用iptables封icmp
或者在服务器上修改内核参数:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
12、怎样防止他人在服务器前通过按下 ctrl+alt+del 强行重启系统(提示,仔细看/etc/inittab)
vim /etc/init/control-alt-delete.conf
exec /sbin/shutdown -r now "Control-Alt-Delete pressed"    这一项注释掉,保存退出
13、当在对服务器进行大负荷操作的时候,你不希望现在有普通用户登录上来,你该怎么做?不能剪网线。
touch /etc/nologin
创建一个nologin文件,此文件为特殊文件,创建之后所有普通用户不能登录;系统维护结束后删除此文件,用户可以恢复登录;
只限于shell登录用户,本身shell为/sbin/nologin 的用户本身就无法登录shell,不受影响;
14、你新建了一批用户,出于安全考虑,要求这些用户在第一次登录的时候 就必须要更改密码,怎么实现?
查看密码和账户过期信息:chage -l username  
将密码设置为过期,用户登陆必须要更改密码:chage -d0 username 或 passwd -e username
15、如何把一个目录下的所有文件(不含目录)权限改为644?
find ./ ! -type d -exec chmod 644 \;
16、请实现下面这个需求:只允许使用普通账户登陆,而普通账户登录后,可以不输入密码就能sudo切换到root账户,root是不允许远程登录的。
vim /etc/ssh/sshd_config
PerimtRootLogin             设置为no,禁止root远程登录
/etc/init.d/sshd reload     重新加载sshd配置文件生效
visudo,添加一行:user        ALL=(root)      NOPASSWD:/bin/su
17、如何使文件只能写不能删除? 如何使文件不能被删除、重命名、设定链接接、写入、新增数据?
chattr +a  只能向文件中添加数据,而不能删除
chattr +i 文件不能被删除、改名、设定链接关系,同时不能写入或新增内容
18、编写shell脚本获取本机的IP/netmask。
ifconfig|awk -F "[ :]+" ‘NR==2 {print $4}’
1)grep+cut:
ifconfig eth0|grep "inet addr"|cut -d: -f2|cut -d ' ' -f1
2) awk:
ifconfig eth0|awk -F "[ :]+" 'NR==2 {print $4}'
ifconfig eth0|awk -F "[ :]+" '$0 ~ "inet addr" {print $4}'
ifconfig eth0|awk -F "[ :]+" '/inet addr/ {print $4}'
3) grep+awk:
ifconfig eth0|grep "inet addr"|awk -F "[ :]+" '{print $4}'
ifconfig eth0|grep "inet addr"|awk '{print $2}'|awk -F: '{print $2}'
4) grep+awk+cut:
ifconfig eth0|grep "inet addr"|awk '{print $2}'|cut -d: -f2
5) sed:
ifconfig eth0|sed -n 's#^.*addr:\(.*\) Bacst.*#\1#g'p  
19、编写个shell脚本将当前目录下大于100K的文件转移到/tmp目录下
find . -size +100K xargs -I {} mv {} /tmp     或find . -size +100k -exec cp {} /tmp \;

20、apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?
Apache主要有两种工作模式:prefork(预派生,默认安装模式)和worker(支持混合的多线程多进程的多路处理模块,可以在编译的时候加参数--with-mpm=worker指定为worker模式)
prefork的特点:
1、prefork MPM 使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销。
2、可以防止意外的内存泄漏,但这种模式消耗的内存比较大;
3、在服务器负载下降的时候会自动减少子进程数;
worker的特点:
worker MPM 使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,
因为Worker MPM的内存使用比Prefork MPM要低得多。但worker MPM也由不完善的地方,假如一个线程崩溃,整个进程就会连同其任何线程一起"死掉".由于线程共享内存空间,
所以一个程式在运行时必须被系统识别为"每 个线程都是安全的"。
21、我们都知道,dns既采用了tcp协议,又采用了udp协议,什么时候采用tcp协议?什么时候采用udp协议?为什么要这么设计?
首先了解一下TCP与UDP传送字节的长度限制: UDP报文的最大长度为512字节,而TCP则允许报文长度超过512字节。当DNS查询超过512字节时,协议的TC标志出现删除标志,
这时则使用TCP发送。通常传统的UDP报文一般不会大于512字节。
区域传送时使用TCP:
辅域名服务器会定时(一般时3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,则会执行一次区域传送,进行数据同步。
区域传送将使用TCP而不是UDP,因为数据同步传送的数据量比一个请求和应答的数据量要多得多,并且TCP是一种可靠的连接,保证了数据的准确性。
域名解析时使用UDP:
客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过TCP三次握手,这样DNS服务器负载更低,响应更快。
虽然从理论上说,客户端也可以指定向DNS服务器查询的时候使用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。
22、一个EXT3的文件分区,当使用touch test.file命令创建一个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,
只使用了,60%的磁盘空间,为什么会出现这个情况,说说你的理由。
df -i 查看inode使用情况
一般是inode满了造成的
查找发现 /tmp 目录下有很多sess_xxxxx的 session临时文件。
ls -lt /tmp | wc -l  
进入/tmp目录,执行find -exec命令       sudo find /tmp -type f -exec rm {} \;  
遍历寻找0字节的文件,并删除。   sudo find /home -type f -size 0 -exec rm {} \;  
23、简述DDOS攻击的原理,有没有解决办法?有,如何解决?
分布式服务拒绝攻击就是用一台主服务器来控制N台肉鸡对目标服务器进行合理的资源请求,导致服务器资源耗尽而不能进行正常的服务。
几种流行的DDOS攻击方式:SYN/ACK FLOOD攻击、TCP全连接攻击、CC攻击(百科:攻击者借助代理服务器生成指向受害主机的合法请求,
实现DDOS,和伪装就叫:cc(ChallengeCollapsar)。CC主要是用来攻击页面的。)
一个简单的测试: 首先是网站如果打不开的话,可以尝试着用3389连接一下服务器看看,然后还可以用PING命令来测试,再一种方式就是用telnet来登录80端口看看,
看会不会出现黑屏。如果这些方式测试都连接不上的话,那就说明受到DDOS攻击了。
然后如果除了80端口之外的其他端口连接都正常,PING命令测试也正常,但就是80端口访问不了,然后看看IIS是否正常,可以把80端口改成其他端口测试,
如果可以正常访问,那就说明很可能受到CC攻击。
防御DDOS攻击:
<1>要有充足的网络带宽和稳定安全的机房:选择口碑好、服务好、安全防护好点的机房,网络带宽直接决定了能抗受攻击的能力。
<2>软硬设备的防护:硬件DDOS防火墙黑洞、冰盾都不错,软件如web服务器都有相应的ddos防护模块,iptables,做单IP的并发限制,流量限制,syn及部分攻击限制。
<3>网站架构优化,避免单点提供服务,集群,冗余,负载均衡、缓存技术的架设。
<4>服务器系统自身的优化及安全参数调配
<5>采用高性能的网络设备
24、在Linux环境下mysql的root密码忘记解决方法
MySQL密码的恢复方法之一
vi /etc/my.cnf
在[mysqld]的段中加上一句:skip-grant-tables 保存并且退出vi。
mysql> UPDATE user SET Password = password ( 'new-password' ) WHERE User = 'root' ;
mysql> flush privileges ;
MySQL密码的恢复方法之二
safe_mysqld --skip-grant-tables &
25、MySQL5.6.16版本的主从复制搭建:
主机A IP:192.168.233.131
主机B IP:192.168.233.132
1)修改mysql的配置文件:
(1)开启二进制日志功能
(2)server-id = 1  //另外一台设置为2
2)在slave数据库上添加授权复制用户,在master数据库上进行授权:
create user 'repl'@'192.168.1.%' identified by 'your-password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.%';
flush privileges;
3)在master数据库上执行`show master status;`命令:(查看)
mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-master-bin.000005
Position: 120
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
4)在slave数据库上执行:
mysql> change master to master_host='192.168.233.131', master_user='repl',master_password='your-password',master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.24 sec)
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.04 sec)
5)在slave上执行`show slave status;`查看slave的状态:如果下面这俩个文件都为YES,则表示mysql主从复制搭建成功:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
26、mysql 主从不一致解决方法
方法一:忽略错误,同步
该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况
解决:
stop slave;
#表示跳过一步错误,后面的数字可变
set global sql_slave_skip_counter =1;
start slave;
之后再用mysql> show slave status\G  查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
ok,现在主从同步状态正常了。。。
方法二:重新做主从同步;
27、写一个防火墙配置脚本,只允许远程主机访问本机的80端口。
IPTABLES -F
IPTABLES -X
IPTABLES -A INPUT -p tcp --dport 80 -j accept
IPTABLES -A INPUT -p tcp -j reject
实现172.16.1.0/24段所有主机通过124.32.54.26外网IP共享上网。
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 124.32.54.26
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
28、删除data目录下所有的空目录:
find /data -type d -empty -exec rm-rf {} ;
29、统计Nginx访问日志,访问量排在前20 的 ip地址:
cat access.log|awk '{print $1}'|sort|unic -c|sort -nr|head -20
30、查看目标主机192.168.0.1开放那些端口     nmap -ps 192.168.0.1
31、查看http的并发请求数及其TCP连接状态:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
32、查看进程-按内存从大到小排列ps -e -o "%C : %p : %z : %a"|sort -k5 -nr
33、查看进程-按cpu利用率从大到小排列ps -e -o "%C : %p : %z : %a"|sort -nr
34、find考察:
查找当前目录下所有以.tar结尾的文件然后移动到指定目录:find ./ -name "*.tar"  -exec mv {} ./backup;
查找当前目录30天以前大于100M的LOG文件并删除:find ./ -name "*.log" -mtime +30 -type f -size  +100M|xargs rm -rf {};
35、sed常用命收集:test.txt做测试
如何去掉行首的#字符:sed -i 's/^#//g' test.txt
在行首添加一个a字符: sed 's/^/a/g' test.txt
在行尾添加一个a字符: sed 's/$/a/' tets.txt
在特定行后添加一个c字符: sed '/wuguangke/ac' test.txt
在行前加入一个c字符: sed '/wuguangke/ic' test.txt

36、写一个脚本将数据库备份并打包至远程服务器192.168.1.1 /backup目录下。
mount 192.168.1.1:/backup /mnt
cd /mnt
/usr/local/mysql/bin/mysqldump -hlocalhost -uroot test >test.sql
tar czf test.sql.tar.gz test.sql
rm -f test.sql
37、新浪面试题:
1. 以下一些Linux 命令的作用分别是什么?
rpm -qf /bin/ls     查找/bin/ls文件属于哪个RPM软件包
2、一台Linux Server要提供HTTP、DNS、数据库、HTTP代理、虚拟机、负载均衡 服务,分别需要安装哪些软件?
http:apache DNS:BIND9   http代理:squid    虚拟机:vmware for linux或是redhat kvm    负载均衡:LVS
3、用哪个命令可以对Mysql中的数据库进行备份?
最常见的mysqldump命令备份,还有mysqldump的加强版mydumper
4、目前IP地址为192.168.1.10的用户总是恶意连接你的一台Linux服务器的80端口,对此做为系统管理员的你有什么样的对策?
sudo iptables -A input -s 192.168.1.10 -p tcp -j drop

38、面试问得很鸡肋:
MySQL主从复制延时的主要原因?
我总结了以下几点:
1)  问题一:主库的从库太多,导致复制延迟
从库数据以3-5个为宜,要复制的从节点数量过多,会导致复制延迟
2)  问题二:从库硬件比主库差,导致复制延迟
查看Master和Slave的系统配置,可能会因为机器配置不当,包括磁盘I/O、CPU、内存等各方面因素造成复制的延迟。一般发生在高并发大数据量写入场景中
3)  问题三:慢SQL语句过多
假如一条SQL语句执行时间是20秒,那么从执行完毕到从库上能查到数据至少需要20秒,这样就延迟20秒了。
一般要把SQL语句的优化作为常规工作不断地进行监控和优化,如果单个SQL的写入时间长,可以修改后分多次写入。
通过查看慢查询日志或show full processlist命令,找出执行时间长的查询语句或大的事务
4)  问题四:主从复制的设计问题
例如主从复制单线程,如果主库写并发太大,来不及传送到从库,就会导致延迟。更高版本的Mysql可以支持多线程复制,门户网站则会开发自己的多线程同步功能。
5)  问题五:主从库之间的网络延迟
主从库的网卡、网线、交换机等网络设备都可能成为复制的瓶颈,导致复制延迟。另外,跨公网的主从复制很容易导致主从复制延迟
6)  问题六:主库读写压力大,导致复制延迟
架构的前端要加buffer及缓存层

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-387886-1-1.html 上篇帖子: Openvswitch原理与代码分析(2): ovs-vswitchd的启动 下篇帖子: 网易即时通讯云平台99.99%可靠性的运维经验谈
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表