1、简述TCP三次握手四次挥手过程及各过程中客户端和服务器端的状态。

​#三次握手​

 ​​客户端向服务器端发送SYN包,客户端进入SYN_SEND状态​

 ​​服务器端收到客户端发送的包返回ACK+SYN包,服务器端进入SYN_RECV状态​

 ​​客户端收到服务器端返回的包再发回ACK包,客户端进入ESTABLISHED状态,服务器端收到包也进入ESTABLISHED状态​

 ​​客户端状态:SYN_SENDE    STABLISHED​

 ​​服务器端状态:SYN_RCVE    ESTABLISHED​

 ​​#四次挥手​

 ​​客户端发送FIN包询问服务器端是否能断开,客户端进入FIN_WAIT_1状态​

 ​​服务器端收到客户端发送的包并返回ACK包,服务器端进入CLOSE_WAIT状态​

 ​​服务器端准备好断开后,发送FIN包给客户端,服务器端进入LAST_ACK状态​

 ​​客户端收到服务器端发送的包后返回ACK包,客户端进入TIME_WAIT状态,服务器端收到包后进​​​​入CLOSED状态​

 ​​客户端状态:FIN_WAIT_1    FIN_WAIT_2    TIME_WAIT​

 ​​服务器端状态:CLOSE_WAIT    LAST_ACKC    LOSED​

2、说说进程和线程的区别

 ​​进程是并发执行的程序在执行过程中分配和管理资源的基本单位。​

​线程是进程的一部分,线程的改变只代表了 CPU 执行过程的改变,而没有发生进程所拥有的资源变化。​

3、查询file.txt以abc结尾的行

 ​​grep​​​ ​​"abc$"​​​ ​​file​​​​.txt​

4、删除file.txt文件中的空行

​sed​​​ ​​-i ​​​​'/^$/d'​​​ ​​file​​​​.txt​

5、打印file.txt文件中的第10行

​sed​​​ ​​-n ​​​​'10p'​​​ ​​file​​​​.txt​

 ​​head​​​ ​​-10 ​​​​file​​​​.txt | ​​​​tail​​​ ​​-1​

6、对MySQL数据库test进行备份和恢复

备份:

​mysqldump -uroot -pPassword -hHostname ​​​​test​​​ ​​>​​​​/root/test​​​​.sql​

恢复:

​mysql -uroot -pPassword -hHostname <​​​​/root/test​​​​.sql​

7、用netstat统计系统当前tcp连接的各种状态的连接数。

​netstat​​​ ​​-nat| ​​​​awk​​​ ​​'{print $6}'​​​​| ​​​​sort​​​ ​​| ​​​​uniq​​​ ​​-c​

8、linux下如何将GBK编码格式的test_gbk.txt文件转换成UTF-8编码格式,转化后的文件名为 test_utf8.txt

​iconv -f GBK -t UTF-8 test_gbk.txt -o test_utf8.txt​

9、说说你用过哪些监控软件,并简述其原理及适用场景

​#zabbix​

​agent方式监控:在被监控端安装agent程序,通过zabbix自己的协议主动或被动发送数据给server端或代理的proxy端,​

​适用于服务器、工作站的监控,不适用于交换机、路由器、防火墙的监控。​

​SNMP方式监控:通过SNMP协议进行监控,需要开起并配置SNMP服务,适用于网络设备(交换机、路由器、防火墙)的监控,​

​通信协议为UDP,所以不适用于服务器、工作站的监控。​

10、写出查看linux系统性能的命令,如cpu、内存、流量、io等

top,free,iftop,iostat

11、说说nginx的upstream支持的分配策略,并简述其原理

​轮询:默认的方式,按时间顺序依次分配​

​weight:根据服务器权重进行轮询分配​

​ip_hash:按ip的​​​​hash​​​​值进行分配,可以解决session保持​

​url_hash:按访问url的​​​​hash​​​​结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效​

​fair:按服务器响应时长进行分配​

12、crontab定时:在11月份内,每天的早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh  怎么实现

​0 6-12​​​​/2​​​ ​​* 11 * ​​​​/usr/bin/httpd​​​​.sh​

13、iptables禁止 ip 10.10.10.1 访问本地80端口

​iptables -t filter -I INPUT -p tcp -s 10.10.10.1 --dport 80 -j DROP​

14、找出在文件a中但不在文件b中的内容,用命令后编写脚本实现

​#!/bin/bash​

​diff​​​ ​​/root/a​​​ ​​/root/b​​​ ​​| ​​​​grep​​​ ​​"<"​​​ ​​| ​​​​awk​​​ ​​'$1=" "'​

15、编写shell循环创建100个用户,用户名格式user_[0~99]

​#!/bin/bash​

​for​​​ ​​i ​​​​in​​​ ​​{1..100};​​​​do​

​useradd​​​ ​​user_$i​

​done​

​echo​​​ ​​"ok"​

对于Linux运维来讲,很多知识要达到精通的程度,就要多练习。

欢迎关注微信公众号: xinsz08

那些年常见的面试题_服务器