• 运维高考题


    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

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

    进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进产生影响。

    而线程只是进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉。

    所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些

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

    grep "abd$" file.txt 

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

    sed -i /^$/d test.tst

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

    sed -n 10p file.txt

    6、对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

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

    netstat -tan | awk '$1 ~ /^tcp/ {a[$NF]++;} END {for (state in a) { print state,a[state]}}'

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

    iconv test_gbk.tst -f gbk -t utf-8 -o test_utf8.txt 

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

    nagios 

    zabbix

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

    top htop

    vmstat free 

    dstat

    iftop  

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

    第一种,轮询rr(默认)

           每个请求按时间顺序逐一分配到不同的后端服务器 ,如果后端服务器down掉,能自动剔除。

    第二种加权轮询wrr

       根据各主机的负载能力,计算调度至哪台主机    

    第三种,ip_hash

       每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

    第四种url_hash(第三方)

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

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

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

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

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

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

    #!/bin/bash

     diff -n a b > diff.txt

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

    #!/bin/bash/

    if [ ! $UID -eq 0 ]

    then

    echo "plz user root user"

    exit 1 

    fi 

    for id in {0..99}

    do 

    if id user_$id &> /dev/null;then

    echo "The user_$id exists"

    else 

    useradd user_$id

    if [ $? -eq 0 ];then

    echo "user_$id" |passwd –stdin user_$id &> /dev/null 

    echo "The user_$id is finised"

    fi

    fi

    done

  • 相关阅读:
    cmake 基本命令
    webpack4下import()模块按需加载,打包按需切割模块,减少包体积,加快首页请求速度
    内容安全策略(CSP)详解
    内网穿透访问Vue项目的时候出现Invalid Host header解决办法
    webpack3 项目升级 webpack4
    vue-multi-module【多模块集成的vue项目,多项目共用一份配置,可以互相依赖,也可以独立打包部署】
    JS的数据类型判断函数、数组对象结构处理、日期转换函数,浏览器类型判断函数合集
    使用模块化工具打包自己开发的JS库(webpack/rollup)对比总结
    基于AlipayJSBridge封装的H5网页支付宝打赏、网站打赏、个人免签支付,支付宝转账打赏支付组件
    whistle替代Fiddler调试远程服务器代码使用教程
  • 原文地址:https://www.cnblogs.com/wajika/p/6362299.html
Copyright © 2020-2023  润新知