1、解释PV、UV、IP是什么意思

 PV(访问量)

 即Page View,页面浏览量或点击量,用户每次刷新或点击一次即被计算一次

 UV(独立访客)

  即Unique Visitor,访问您网站的一台电脑客户端为一个访客

    00:00-24:00内相同的客户端只被计算一次

 IP(独立IP):

   即Internet Protocol,指独立IP数.00:00-24:00内相同IP地址被计算一次


 计算:

   PV日访问量:

      访问IP量 * 8 = PV

   UV日访问量:

       访问IP量 / 2 = UV 

   并发量:

      访问IP量 / 10 = 并发量


   中小企业日PV访问量一般为五万左右


2、查看进程打开的文件

  lsof -c 进程名


3、查看打开文件的进程 

  lsof 打开的文件名


3.1 通过进程名找到他的进程ID

  pgrep -f tomcat


3.2 查看某个进程打开的网络连接

 lsof -i | grep sshd | grep -v LISTEN


3.3 查看linux服务器各种连接状态

 netstat -ant | awk '/^tcp/{++S[$NF]}END{for(a in S)print a,S[a]}'


3.4 查看losf查看符合条件的进程情况

 lsof -i:22


4、用什么命令查看文件的格式(tar、gz)

  tar tvf file.tar

  tar ztvf file.tar.gz


5、找出/opt目录及其子目录所有以*.txt结尾且大于100K的文件,并删除

  find /opt -name *.txt -size +100k -exec rm {} \;


7、如何查看网卡速度和当前流量情况

  1、当查看网速度  ethtool eth0

  2、查看当前流量  watch ifconfig 或 iftop


8、如何测试网卡的吞吐量

  1、iptraf工具提供了每个网卡吞叶量的仪表盘: iptraf -d eth0

  2、watch命令 watch -n 1 "/sbin/ifconfig eth0 | grep bytes"


9、如何测试硬盘的读写速度

  dd if=/dev/zero of=/opt/test.txt bs=1G count=1 


9.1、磁盘满了,删除文件空间没释放,是什么原因?

  主要是对应程序的句柄没释放导致的。可以通过lsof的命令查到对应的命令,杀掉对应的进程就能释放了。 

   解决方法:

   lsof -n | grep deleted

   for i in `lsof -n | grep deleted | awk '{print $2}'`;do kill $i; done




10、free命令的输出如下,请解析各个输出项的含义

  wKioL1gyfRng2Ed6AAAfbo0YMww552.png

    第一部分Mem行:

    total 内存总数: 1002M

    used 已经使用的内存数: 769M

    free 空闲的内存数: 232M

    shared 当前已经废弃不用,总是0

    buffers Buffer 缓存内存数: 62M

    cached Page 缓存内存数:421M

     关系:total = used + free

    

     第二部分(-/+ buffers/cache):

     (-buffers/cache) used内存数:286M (指的第一部分Mem行中的used – buffers – cached)

     (+buffers/cache) free内存数: 715M (指的第一部分Mem行中的free + buffers + cached)

     可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数.


     第三部分是指交换分区, 如Windows设置的虚拟内存


11、简述TCP3次握手的过程 ?

   第一次:用户A向用户B发送syn包请求交互

   第二次:用户B收到syn包 ,返回ack包确认+syn包请求交互

   第三次:用户A收到ack+syn包,返回ack包确认交互,状态链接成功ESTABLISHED   


12、如何在尽可能短的时间内在500台服务器上执行ifconfig命令?

   使用Ansible、SaltStack等自动化运维工具,或者利用shell、Python等脚本写多线程脚本执行


13、如何恢复root密码?

  1、引导进入单用户模式,然后重设密码

    过程:进入grub界面按上下健,光标定位到kernel,再按e,空格写1,回车再按b启动,进入终端 输入passwd     修改新密码


14、ulimit -SHn 1000000这个命令的作用是什么?

   设定打开最大文件数为1000000

 

15、用一个命令实现,统计80端口的所有链接状态并按照链接状态由大到小排列显示

   netstat -nat | awk '/:80/{++S}{$NF}END{for(a in S)print S[a],a}' | sort


16、描述一下DDOS***原理

   DDOS的***原理:

   指非常多的机器,往被***的机器发起大的流量访问,并且只往被***机器发请求,不管被***机 是否会响    应,填满被***机的网络带宽。


17、有台16核32G的Linux服务器,如何查看负载?如果负载很高,如何排查原因?(写出详细的命令或 者步骤)

   uptime或top查看机器负载,

   根据使用top查看出的进程,看一下是什么应用,再查看对应的应用的日志,再看看是因为是访问量过大的问    题,还是因为应用性能的问题


18、数据库

  1、有如下信息表,表名t_host

      字段名称      描述

     id          机器ID

     IP          机器IP

     Cpu_num      机器CPU核数

     Cpu_model     CPU型号

     Host_comment   机器备注信息 

     写SQL语句统计24核并且CPU型号为E5-2420的机器数量

    select count(*) from t_host where Cpu_num=24 and Cpu_model='E5-2420';

    

    2、MySQL查看一个表的结构,使用什么命令?

      desc tablename;

    

    3、MySQL数据库备份有哪几种方式,分别是什么?

      三种方式:1、完整备份

           2、增量备份

           3、差异备份

    

  2、将t1表id字段倒序排序,从第二行开始取,读三行

    select * from t1 order by id desc limit 2,3;


19、Shell脚本

  1、写一个脚本,实现批量增加20个用户,用户名为user01-30,密码为随机的大小写字母加数字,密码长度为12位

    for i in `seq 1 30`

    do

        pwd=$(head -c 500 /dev/urandom | tr -dc a-zA-Z0-9|head -c 12)

        if[$i -lt 10];then

            useradd user0$i

            echo "user0$i$pwd" | passwd --stdin user$i 

            echo user0$i user0$i$pwd >> userinfo.txt

        else    

            useradd user$i         

                echo "user$i$pwd" | passwd --stdin user$i 

            echo user$i user0$i$pwd >> userinfo.txt

        fi 

    done


   2、编写shell脚本,在当前目录下生成1000个文件,每个文件100行,文件名和文件内容随意

    #!/bin/bash

    for i in {1..1000}

    do

            sleep 1

            touch $i.txt

            for b in `seq 1 100`

            do

                    echo $b >> $i.txt

            done

    done


   3、编一个脚本放在计划任务里每分钟运行,当服务器负载超过5时(低于5时,什么也不做,脚本退出)打印      服务器的内存,磁盘I/O使用情况,并列出占用CPU资源较大的1-10位

     思路:

      通过内核负载监控文件去取负载数据,并只取整数部分的数据来判断就可以

     负载的文件路径:/proc/loadavg

     脚本路径:/data/monitor/sys_mon.sh

     日志路径:/data/logs/monitor/sys_mon.log

    脚本内容:

        #!/bin/sh

        echo ''

        date

        LOAD=`cat /proc/loadavg |awk -F'.' '{print $1}'`

        if [ $LOAD -gt 5 ] || [ $LOAD -eq 5 ];then

                echo "MEM USED###############################"

                free -m

                echo "DISK IO USED###############################"

                iostat -x 1 1

                echo "CPU USED ###############################"

                ps -aux|sort -rn -k3 |head -10

        fi


20、Python开发

   1、合并2个字典

    dict1=(1:[1,11,111],2:[2,22,222])

    dict2=(3:[3,33,333],2:[4,44,444])

    合并两个字典得到类似

    (1:[1,11,111],2:[2,22,222],3:[3,33,333],4:[4,44,444])

    方法1:dictMerged1=dict(dict1.items()+dict2.items())

    方法2:dictMerged2=dict(dict1**dict2)

    方法2等同于:

    dictMerged=dict1.copy()

    dictMerged.update(dict2)

    

   2、求2个list的差集

    a_list = [1,2,3,4]

    b_list = [1,4,5]

    ret=[]

    for i in a_list:

        if i not in b_list:

            ret.append(i)