面试问题

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

tcp 三次握手:
第一次握手:客户端 A 发送 SYN 包到服务器 B,并进入 SYN_SEND 状态,等待服务器 B 确认
第二次握手:服务器 B 收到 SYN 包之后,必须确认客户端 A 的 SYN,同时自己也发送一个 SYN 包,
SYN+ACK 包,此时服务器 B 进入 SYN_RECV 状态
第三次握手:客户端 A 收到服务器 B 的 SYN+ACK 包,向服务器 B 发送确认包 ACK,此包发送完毕,
客户端 A 和服务器 B 进入到 ESTABLISHED 状态,完成 3 次握手
tcp 四次断开:
1、客户端 A 发送一个 FIN,用来关闭客户端 A 到服务器 B 的数据传送
2、服务器 B 收到这个 FIN,会发回一个 ACK,确认序号为收到的序号+1,和 SYN 一眼,一个 FIN
将占用一个序号
3、服务器 B 关闭与客户端 A 的连接,发送一个 FIN 给客户端 A 4、客户端 A 发回 ACK 报文确认,并将确认序号设置为收到的序号+1
*

说说进程和线程的区别

进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进产生影响。
而线程只是进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,
一个线程死掉就等于整个进程死掉。
所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些

查询 file.txt 以 abc 结尾的行

grep “abd$” file.txt

删除 file.txt 文件中的空行

sed -i /^$/d test.tst

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

sed -n 10p file.txt

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

备份:mysql -uuser -ppassword -R –single-transaction –quick
–default-character-set=utf8 –opt test > /data/bak/test.sql
恢复:mysql -uuser -ppassword < /data/bak/test.sql

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

netstat -tan | awk ‘KaTeX parse error: Expected '}', got 'EOF' at end of input: 1 ~ /^tcp/ {a[NF]++;} END {for (state in a) { print
state,a[state]}}‘

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

top htop
vmstat free
dstat
iftop

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

第一种,轮询 rr(默认)
每个请求按时间顺序逐一分配到不同的后端服务器 ,如果后端服务器 down 掉,能自动剔除。
第二种加权轮询 wrr
根据各主机的负载能力,计算调度至哪台主机
第三种,ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决
session 的问题。
第四种 url_hash(第三方)
按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个后端服务器,后端服务器为缓存
时比较有效

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

  • 6-12/2 * 11 * /usr/bin/httpd.sh
    echo ‘* 6-12/2 * 11 * root /usr/bin/httpd.sh’ >> /etc/crontab
    i

ptables 禁止 ip 10.10.10.1 访问本地 80 端口

iptables -I INPUT -s 10.10.10.1/32 –dport 80 -j DROP

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

#!/bin/bash
diff -n a b > diff.txt

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

#!/bin/bash/
if [ ! KaTeX parse error: Expected group after '_' at position 88: … do if id user_̲id &> /dev/null;then
echo “The user_KaTeX parse error: Expected group after '_' at position 30: …e useradd user_̲id
if [ KaTeX parse error: Expected group after '_' at position 26: …then echo "user_̲id” |passwd –stdin user_KaTeX parse error: Expected 'EOF', got '&' at position 4: id &̲> /dev/null ec…id is finised"
fi
fi
done
统计 80 端口连接数
netstat -nat|grep -i “80”|wc -l 2)统计 httpd 协议连接数
ps -ef|grep httpd|wc -l 3)、统计已连接上的,状态为“established
netstat -na|grep ESTABLISHED|wc -l
4)、查出哪个 IP 地址连接最多,将其封了.
netstat -na|grep ESTABLISHED|awk {print $5}|awk -F: {print $1}|sort|uniq
-c|sort -r +0n
netstat -na|grep SYN|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r
+0n

用 tcpdump 嗅探 80 端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." ‘{print $1"."$2"."$3"."$4}’
| sort | uniq -c | sort -nr |head -5 

查看/var/log 目录下文件数
ls /var/log/ -lR| grep “^-” |wc -l
2.5 5.查看当前系统每个 IP 的连接数
netstat -n | awk ‘/^tcp/ {print $5}’| awk -F: ‘{print $1}’ | sort | uniq -c
| sort -rn
2.6 6.shell 下 32 位随机密码生成
cat /dev/urandom | head -1 | md5sum | head -c 32 >> /pass
将生成的 32 位随机数 保存到/pass 文件里了
2.7 7.统计出 apache 的 access.log 中访问量最多的 5 个 IP
cat access_log | awk ‘{print $1}’ | sort | uniq -c | sort -n -r | head -5

.在 1-39 内取随机数
expr [ [ [RANDOM%39] + 1
RANDOM 随机数
%39 取余数 范围 0-38

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值