天天看點

Linux常見面試題3

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指令的輸出如下,請解析各個輸出項的含義

Linux常見面試題3

    第一部分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}

            sleep 1

            touch $i.txt

            for b in `seq 1 100`

            do

                    echo $b >> $i.txt

            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:

繼續閱讀