linux系統運維面試題簡答

1.     簡述經常使用高可用技術node

解答:linux

Keepalived:Keepalived是一個保證集羣高可用的服務軟件,用來防止單點故障,使用VRRP協議實現。在master和backup之間經過master主動下降本身的權值或者backup檢測到master出現故障時,backup將會接管master的工做,繼續服務。ios

HAproxy:HAProxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支持虛擬主機,它是免費、快速而且可靠的一種解決方案。HAProxy特別適用於那些負載特大的web站點,這些站點一般又須要會話保持或七層處理。HAProxy運行在當前的硬件上,徹底能夠支持數以萬計的併發鏈接。而且它的運行模式使得它能夠很簡單安全的整合進您當前的架構中,同時能夠保護你的web服務器不被暴露到網絡上。nginx

heartbeat+ DRBD:web

heartbeat (Linux-HA)的工做原理:heartbeat最核心的包括兩個部分,心跳監測部分和資源接管部分,心跳監測能夠經過網絡鏈路和串口進行,並且支持冗 餘鏈路,它們之間相互發送報文來告訴對方本身當前的狀態,若是在指定的時間內未收到對方發送的報文,那麼就認爲對方失效,這時需啓動資源接管模塊來接管運行在對方主機上的資源或者服務。算法

Distributed Replicated Block Device(DRBD)是一個用軟件實現的、無共享的、服務器之間鏡像塊設備內容的存儲複製解決方案。shell

數據鏡像:實時、透明、同步(全部服務器都成功後返回)、異步(本地服務器成功後返回)windows

2.     簡述一下DNS的解析過程瀏覽器

解答:緩存

一、在瀏覽器中輸入www.qq.com域名,操做系統會先檢查本身本地的hosts文件是否有這個網址映射關係,若是有,就先調用這個IP地址映射,完成域名解析。

二、若是hosts裏沒有這個域名的映射,則查找本地DNS解析器緩存,是否有這個網址映射關係,若是有,直接返回,完成域名解析。

三、若是hosts與本地DNS解析器緩存都沒有相應的網址映射關係,首先會找TCP/IP參數中設置的首選DNS服務器,在此咱們叫它本地DNS服務器,此服務器收到查詢時,若是要查詢的域名,包含在本地配置區域資源中,則返回解析結果給客戶機,完成域名解析,此解析具備權威性。

四、若是要查詢的域名,不禁本地DNS服務器區域解析,但該服務器已緩存了此網址映射關係,則調用這個IP地址映射,完成域名解析,此解析不具備權威性。

五、若是本地DNS服務器本地區域文件與緩存解析都失效,則根據本地DNS服務器的設置(是否設置轉發器)進行查詢,若是未用轉發模式,本地DNS就把請求發至13臺根DNS,根DNS服務器收到請求後會判斷這個域名(.com)是誰來受權管理,並會返回一個負責該頂級域名服務器的一個IP。本地DNS服務器收到IP信息後,將會聯繫負責.com域的這臺服務器。這臺負責.com域的服務器收到請求後,若是本身沒法解析,它就會找一個管理.com域的下一級DNS服務器地址(qq.com)給本地DNS服務器。當本地DNS服務器收到這個地址後,就會找qq.com域服務器,重複上面的動做,進行查詢,直至找到www.qq.com主機。

六、若是用的是轉發模式,此DNS服務器就會把請求轉發至上一級DNS服務器,由上一級服務器進行解析,上一級服務器若是不能解析,或找根DNS或把轉請求轉至上上級,以此循環。不論是本地DNS服務器用是是轉發,仍是根提示,最後都是把結果返回給本地DNS服務器,由此DNS服務器再返回給客戶機。

從客戶端到本地DNS服務器是屬於遞歸查詢,而DNS服務器之間就是的交互查詢就是迭代查詢。

3.     簡單介紹下你使用過的服務器監控軟件,並簡要說明下它們各自的特色,介紹下經常使用的監控指標。查看當前Linux系統的狀態,如CPU使用,內存使用,負載狀況等,查看佔用內存最大的5個進程

解答:

Nagios,

Nagios 能夠監控的功能有:

一、監控網絡服務(SMTP、POP三、HTTP、NNTP、PING等);

二、監控主機資源(處理器負荷、磁盤利用率等);

三、簡單地插件設計使得用戶能夠方便地擴展本身服務的檢測方法;

四、並行服務檢查機制;

五、具有定義網絡分層結構的能力,用"parent"主機定義來表達網絡主機間的關係,這種關係可被用來發現和明晰主機宕機或不可達狀態;

六、當服務或主機問題產生與解決時將告警發送給聯繫人(經過EMail、短信、用戶定義方式);

七、能夠定義一些處理程序,使之可以在服務或者主機發生故障時起到預防做用;

八、自動的日誌滾動功能;

九、能夠支持並實現對主機的冗餘監控;

十、可選的WEB界面用於查看當前的網絡狀態、通知和故障歷史、日誌文件等;

十一、能夠經過手機查看系統監控信息;

十二、可指定自定義的事件處理控制器;

查看當前系統的狀態:top

查看佔用內存最大的5個進程:top,而後按M(大寫)鍵。方法二:ps -aux | sort -k4nr | head -5

4.     使用Windows服務管理命令開啓BEASD的服務,並查看當前創建的鏈接數,默認端口爲80

解答:

啓動服務:net start BEASD

若是服務被禁止啓動,使用該命令:sc config BEASD=demand(手動)|auto(自動)|disabled(禁用);sc start BEASD

5.     簡述Linux系統的開機啓動順序,查詢程序運行級別和修改運行級別。

解答:

POST加電自檢--》MBR引導--》GRUB--》加載內核--》啓動init進程--》讀取/etc/inittab文件,/etc/init/*.conf文件--》使用/etc/rc.d/rc.sysinit初始化腳本--》執行/etc/rc.d/rc腳本(加載/etc/rc3.d/下全部腳本)--》執行/etc/rc.d/rc.local--》執行/bin/login登陸程序

查詢程序運行級別:runlevel

修改運行級別:init [0123456]

6.     簡述軟連接和硬連接的區別。

解答:

軟連接是指建立一個新的文件,block裏存放的是被連接文件的文件名指向,軟連接的inode與源文件的inode不一樣,將源文件刪除,而後重建,改變了inode,軟連接文件仍然有效。

硬連接是建立一個新的文件名,將它的inode指向源文件的inode,因此硬連接的inode和源文件是相同的,源文件被刪除後,硬連接仍然能夠有效,。

7.     主機A須要給主機B傳輸一份100G的數據,能夠作哪些傳輸優化?

解答:

  1. 數據打包壓縮

  2. 數據分片,同步傳輸

  3. 增大傳輸帶寬,網絡端口聚合

8.     簡述LVS的工做模式和調度算法,大併發環境推薦架構。

解答:

工做模式:NAT,TUNNEL,DR,FULLNAT

算法

說明

rr

輪詢調度(Round-Robin),它將請求依次分配不一樣的RS節點,也就是在RS節點中均攤請求。這種算法簡答,可是隻適合於RS節點處理性能相差不大的狀況

wrr

加權輪詢調度(Weighted  Round-Robin)它將依據不一樣RS節點的權值分配任務。權值較高的RS將優先得到任務,而且分配到的鏈接數將比權值較低的RS節點更多。相同權值的RS獲得相同數目的鏈接數。

dh

目的地址哈希調度(Destination  Hashing)以目的地址爲關鍵字查找一個靜態hash表來得到須要的RS

sh

源地址哈希調度(Source  Hashing)以源地址爲關鍵字查找一個靜態hash表來得到須要的RS

lc

最小鏈接數調度(Least-Connection),IPVS表存儲了全部的活動的鏈接。把新的鏈接請求發送到當前鏈接數最小的RS

wlc

加權最小鏈接數調度(Weighted  Least-Connection)假設各臺RS的權值依次爲Wi(I=1..n),當前的TCP鏈接數依次爲Ti(I=1..n),依次選取Ti/Wi爲最小的RS做爲下一個分配的RS

lblc

基於地址的最小鏈接數調度(Locality-Based Least-Connection),未來自同一目的地址的請求分配給同一臺RS節點,若是這臺服務器已滿負荷,分配給鏈接數最小的RS,並以它爲下一次分配的首先考慮

lblcr

基於地址帶重複最小鏈接數調度(Locality-Based Least-Connection with Replication),對於某一目的地址,對應的一個RS子集。對此地址請求,爲它分配子集中鏈接數最小RS;若是子集中全部服務器均已滿負荷,則從集羣中選擇一個鏈接數較小服務器,將它加入到此子集並分配鏈接;若必定時間內,未被作任何修改,則將子集中負載最大的節點從子集刪除

SED

最短的指望的延遲(Shortest  Expected Delay Scheduling SED)

基於wlc算法。舉例:

ABC三臺機器分別權重123,鏈接數也分別是123.那麼若是使用WLC算法的話一個新請求進入時它可能會分給ABC中的任意一個。使用SED算法後會進行這樣的運算:

A(1+1)/1

B(1+2)/2

C(1+3)/3

根據運算結果,把鏈接交給C

NQ

最少隊列調度(Never  Queue Scheduling NQ)

無需隊列。若是RS的鏈接數=0就直接分配過去,不須要再進行SED運算

大併發環境推薦:DR模式,rr調度算法。

9.     簡述TCP三次握手的過程?

解答:

wKiom1ii9qjCscn2AAEEMO9NDeg316.jpg-wh_50

 

10. sed將文件test.txt中的全部」/opt/tmp」改成」/root/tmp」,並刪除全部空行。

解答:

sed -i ‘s#/opt/tmp #/root/tmp #g’test.txt|sed -i ‘/^\s*$/d’

11. 將192.168.16.3這臺Windows的server文件夾掛載到linux本地/mnt/server目錄,Windows的帳戶爲:administrator,密碼爲:123456

解答:

一、先在windows下面共享須要掛載的目錄server。

二、確保linux與windows是在同一個局域網當中。

三、在linux下面建立一個須要掛載到的目錄/mnt/server。

四、利用mount命令進行掛載。

掛載命令:mount -t cifs -o username=administrator,password=123456//192.168.16.3/server /mnt/server

12. 寫一個防火牆配置腳本,只容許遠程主機訪問本機的80端口。(linux iptables)

解答:

#!/bin/bash

#this is a server firewall

#updated by yehaifeng

#qq:769358362

#define var

IPT=/sbin/iptables

 

#Remove any existing rules

$IPT -F

$IPT -X

$IPT -Z

#setting default firewallpolicy

$IPT --policy OUTPUT ACCEPT

$IPT --policy FORWARD DROP

$IPT -P INPUT DROP

 

#setting for loopback interface

$IPT -A INPUT -i lo -j ACCEPT

$IPT -A OUTPUT -o lo -j ACCEPT

 

#accept 80 port only

$IPT -A INPUT   -p tcp --dport 80 -j ACCEPT

 

#save iptables

/etc/init.d/iptables save

 

13. 編寫個shell腳本將/logs目錄下3天前的文件轉移到/tmp目錄下。

解答:

#!/bin/bash

#this is to move file 3 yearago from /logs to /tmp

#updated by yehaifeng

#qq:769358362

 

#define var

FILE_FROM=/logs

FILE_TO=/tmp

DAY_AGO=3

 

cd $FILE_FROM

for file in `find $FILE_FROM-type f -mtime +3`

   do

              /bin/mv $FILE_FROM/$file $FILE_TO/$file

   done

 

14. 天天1:00備份/var/log目錄下前一天的日誌文件並存放到當前目錄的btslog目錄中,並刪除15天前的log備份文件,請使用shell腳本完成。(日誌格式爲:btsvr.log.2016-01-01,打包備份文件格式爲:btsvr.log.2016-01-01.tar.gz)

解答:

cat bak_logs.sh

#!/bin/bash

#this is to backup logs

#updated by yehaifeng

#qq:769358362

 

#define var

YESTERDAY=`date +%F -d '-1 day'`

LOG_DIR=/var/log

BAK_DIR=/var/log/btslog

LOG_FILE=btsvr.log

 

cd $LOG_DIR/

if [ -f $LOG_DIR/$LOG_FILE.$YESTERDAY] ;then{

tar zcf $LOG_DIR/$LOG_FILE.$YESTERDAY.tar.gz$LOG_DIR/$LOG_FILE.$YESTERDAY

/bin/mv $LOG_DIR/$LOG_FILE.$YESTERDAY.tar.gz/BAK_DIR/

}

else

       echo 「the file is not exist.」

fi

 

使用定時任務天天1點執行該腳本:0001 * * * /bin/bash bak_logs.sh

15. 寫一個腳本進行nginx日誌統計,獲得訪問ip最多的前10個(nginx日誌路徑:/nginx/default/access.log)

解答:

cat bak_logs.sh

#!/bin/bash

#this is to backup logs

#updated by yehaifeng

#qq:769358362

 

#define var

LOG_FILE=/nginx/default/access.log

awk '{print $1}'/application/nginx/logs/access.log |sort|uniq -c|sort -r|head -10>/tmp/ip_max.txt

echo /tmp/ip_max.txt
相關文章
相關標籤/搜索