1. 程式人生 > >運維工程師面試筆試題總結(二)

運維工程師面試筆試題總結(二)

1、Linux啟動大致過程?

1)POST:通電自檢
2)BIOS:BOIS自檢,載入硬碟
3)讀取MBR,進行MBR引導
4)grub引導選單
5)載入核心 Kernel(ramdisk)
6)啟動init程序,依據inittab檔案設定執行級別
7)init程序,執行rc.sysinit檔案
8)啟動核心模組,執行不同級別的指令碼程式
9)執行/etc/rc.d/rc.local
10)啟動mingetty,進入系統登陸介面。

2、apache有幾種工作模式,分別簡述兩種工作模式及其優缺點?

apache主要有兩種工作模式:prefork(apache的預設安裝模式)和worker(可以在編譯的時候新增–with-mpm=worker選項)
prefork的特點是:
1.這種模式可以不必在請求到來時再產生新的程序,從而減小了系統開銷
2.可以防止意外的記憶體洩漏
3.在伺服器負載下降的時候會自動減少子程序數

worker的特點是:支援混合的多執行緒多程序的多路處理模組

如果對於一個高流量的HTTP伺服器,worker MPM是一個比較好的選擇,因為worker MPM佔用的記憶體要比prefork要小。

3、LVS三種模式的工作過程?

NAT (Network Address Translation)模式。LB收到使用者請求包後,LB將請求包中虛擬伺服器的IP地址轉換為某個選定RS的IP地址,轉發給RS;RS將應答包發給 LB,LB將應答包中RS的IP轉為虛擬伺服器的IP地址,回送給使用者。

IP隧道 (IP Tunneling)模式。LB收到使用者請求包後,根據IP隧道協議封裝該包,然後傳給某個選定的RS;RS解出請求資訊,直接將應答內容傳給使用者。此時要求RS和LB都要支援IP隧道協議。

DR(Direct Routing)模式。LB收到請求包後,將請求包中目標MAC地址轉換為某個選定RS的MAC地址後將包轉發出去,RS收到請求包後 ,可直接將應答內容傳給使用者。此時要求LB和所有RS都必須在一個物理段內,且LB與RS群共享一個虛擬IP。

4、簡述/etc/fstab裡面個欄位的含義?

因為mount掛載在重啟伺服器後會失效,所以需要將分割槽資訊寫到/etc/fstab檔案中讓它永久掛載:
磁碟分割槽 掛載目錄 檔案格式
/dev/sdb1 /mnt/david ext4 defaults 0 0

5、Apache設定虛擬目錄的欄位?

NameVirtualHost 192.168.1.2 //設定域名虛擬主機使用的IP地址
<VirtualHost 192.168.1.2:80> //建立在地址上的虛擬主機區域
ServerName

www.sfzhang.com //虛擬主頁說使用的域名
DocumentRoot /data/vhosts/sfzhang //建立虛擬主機所使用的文件根目錄

6、一個EXT3的檔案分割槽,當用touch新建檔案時報錯,錯誤資訊是磁碟已滿,但是使用df -H檢視分割槽資訊時只使用了50%,請分析具體原因?

答:兩種情況,一種是磁碟配額問題,另外一種就是EXT3檔案系統的設計不適合很多小檔案跟大檔案的一種檔案格式,出現很多小檔案時,容易導致inode耗盡了。

7、請使用Linux系統命令統計出establish狀態的連線數有多少?

netstat -an |grep 80 |grep ESTABLISHED |wc -l

8、mysql資料庫的備份還原是怎麼做的?

答:平時採用兩種方法來做:
1)利用mysql自帶的使用工具mysqldump和mysql來備份還原資料庫
2)利用第三方的mysql管理工具比如:mysqladmin
3)停止mysqld服務拷貝資料檔案

9、Linux系統是由那些部分組成?

Linux系統核心,shell,檔案系統和應用程式四部分組成。

10、用一條命令檢視目前系統已啟動服務所監聽的埠?

 netstat -antl |grep "LISTEN"  

11、使用lsof命令檢視佔用80埠的程序?

 lsof `which httpd`   或者lsof -i:80也可以

12、統計出一臺web server上的各個狀態(ESTABLISHED/SYN_SENT/SYN_RECV等)的個數?

[[email protected] ~]# netstat -antl |grep "ESTABLISHED" |wc -l
[[email protected] ~]# netstat -antl |grep "SYN_SENT" |wc -l
[[email protected] ~]# netstat -antl |grep "SYN_RECV" |wc -l
上面的命令可以用一條命令來統計出來TCP各種狀態連線總數:
[[email protected] ~]# netstat -n |grep ^tcp |awk '{print $NF}' |sort -r |uniq -c  

13、查詢/usr/local/apache/logs目錄最後修改時間大於30天的檔案,並刪除?

find  /usr/local/apache/logs -type f -mtime +30 -exec rm -f {}  \;

14、新增一條到192.168.3.0/24的路由,閘道器為192.168.1.254?

route add  -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.1.254

15、利用sed命令將test.txt中所有的回車替換成空格?

sed -i s/\r/ /g test.txt 

16、在每週6的凌晨3:15執行/home/shell/collect.pl,並將標準輸出和標準錯誤輸出到/dev/null裝置,請寫出crontab中的語句?

15 3 * * 6 /home/shell/collect.pl  > /dev/null  2>&1  

17、原始碼編譯安裝apache,要求為:安裝目錄為/usr/local/apache,需有壓縮模組,rewrite,worker模式;並說明在apache的worker MPM中,為什麼ServerLimit要放到配置段最前面?

./configure --prefix=/usr/local/apache --enable-so--with-rewrite --with-mpm-worker
不放在最前面,client會忽略掉的

18、請寫出精確匹配IPv4規範的正則表示式?

grep "[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}.[0-9]\{3\}"  access.logs

19、匹配文字中的key,並打印出該行及下面的5行?

grep -A5 key filename

20、dmesg命令中看到ip_conntrack: table full, dropping packet.,如何解決?

加大ip_conntrack_max 的值;
降低ip_conntrack_timeout的時間;

21、查詢file1裡面空行的所在行號?

grep -n "^$" file1

22、查詢file1以abc結尾的行?

grep "abc$" file1

23、打印出file1檔案第1到第三行?

sed -n '1,3p' file1 
用head -3 file1也可以

24、如何將本地80埠的請求轉發到8080埠,當前主機IP為192.168.2.1?

iptables -t nat -A PREROUTING -d LOCALIP -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.1:8080
iptables -t nat -A POSTROUTING -d 192.168.2.1 -p tcp -m tcp --dport 8080 -j SNAT --to-source LOCALIP:80

25、crontab 在11月份內,每天的早上6點到12點中,每隔2小時執行一次/usr/bin/httpd.sh 怎麼實現 ?

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

26、編寫個shell指令碼將/usr/local/test 目錄下大於100K的檔案轉移到/tmp目錄?

find /usr/local/test -type f -size +100k -exec mv {} /tmp \;

27、有三臺Linux主機,A,B和C,A上有私鑰,B和C上都有公鑰,如何做到用私鑰從A登入到B後,可以直接不輸密碼即可再登入到C?並寫出具體命令列。

大致思路在A上面ssh-keygen -t dsa 直接回車生成金鑰,
然後把公鑰分別用ssh-copy-id拷貝到B和C上面。
ssh-copy-id -i id_dsa.pub "-p埠號 [email protected]的ip地址",
然後在A上面就可以用ssh -p埠號 
[email protected]不要密碼直接登入伺服器B和C。