1、简述TCP三次握手四次挥手过程及各过程中客户端和服务器端的状态。
握手:
client 发送请求SYN到 server; 状态:server;初始状态为LISTEN,client 发送SYN后变为SYN_SENT
server 发送ACK回应,并发送SYN请求到 client;状态:服务器收到SYN后,变为SYN_RCVD,发送ACK+SYN后,变为ESTAHLISHED
client 发送ACK到服务端,连接建立。 客户端变为ESTABLISHED
挥手:
client 发送断开请求FIN到 server;状态:客户端发送FIN后,变为FIN_WAIT_1
server 发送ACK回应 client;状态:server收到FIN后,变为CLOSE_WAIT,client收到ACK后,变为FIN_WAIT_2
server 发送FIN到 client;状态:server发送FIN后,变为LAST_ACK状态,client收到FIN后,变为TIME_WAIT
client 发送ACK到 server,连接断开;状态:server收到ACK后,变为CLOSED。
2、说说进程和线程的区别
进程是程序在执行过程中的基本单位。每个进程至少包含一个线程,线程之间可以共享变量,进程之间需要使用queue等机制实现变量的共享。
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
6、对MySQL数据库test进行备份和恢复
备份:mysqldump -uroot -p test > ~/test.sql
恢复:mysql -uroot -p < ~/test.sql
7、用netstat统计系统当前tcp连接的各种状态的连接数。
netstat -an | awk '/^tcp/ {print $NF}' |uniq -c
8、linux下如何将GBK编码格式的test_gbk.txt文件转换成UTF-8编码格式,转化后的文件名为 test_utf8.txt
#!/bin/env python
f_gbk = open(‘test_gbk.txt’, ‘r’)
f_utf = open(‘test_utf8.txt’,’a’)
for line in f_gbk:
line = line.decode(‘gbk’)
f_utf.write(line.encode(‘utf-8’))
f_gbk.close()
f_utf.close()
9、说说你用过哪些监控软件,并简述其原理及适用场景
zabbix,原理:agentd搜集被监控服务器的信息,传给服务端,服务端写入数据库。
再通过php的网页将数据展现出来
适用场景:监控支持snmp的设备,监控linux主机,监控mysql redis mangodb的状态
10、写出查看linux系统性能的命令,如cpu、内存、流量、io等
ps top free iostat vmstat netstat iptraf
终极解决方案 阿里巴巴开源的tsar
11、说说nginx的upstream支持的分配策略,并简述其原理
轮询:请求按顺序分配到后端服务器
weight:与轮询相同,对weight增加权重
ip_hash: 根据ip的hash结果分配到固定的后端服务器
url_hash: 与ip_hash相同,不过按照url的hash结果分配到固定的后端服务器
12、crontab定时:在11月份内,每天的早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh 怎么实现
echo '* 6-12/2 * 11 * root /usr/bin/httpd.sh' >> /etc/crontab
13、iptables禁止 ip 10.10.10.1 访问本地80端口
iptables -A INPUT -s 10.10.10.1 -p tcp —dport 80 -j DROP
14、找出在文件a中但不在文件b中的内容,用命令后编写脚本实现
#!/bin/bash
diff a b | grep '>' | sed -r 's/>(.*)/\1/g'
15、编写shell循环创建100个用户,用户名格式user_[0~99]
#!/bin/bash
for i in `seq 0 99`; do
useradd "user_$i"
done
原创文章,作者:aaron,如若转载,请注明出处:http://www.178linux.com/18969