Linux 2017年企業(yè)運(yùn)維經(jīng)典面試題匯總(2)

2018-07-31 14:45 更新

防偽碼:不要仰望別人,自己亦是風(fēng)景。


1、寫一個(gè)腳本查找最后創(chuàng)建時(shí)間是三天前,后綴是*.log的文件并刪除

1
find .-ctime +3 -name '*.log' rm -rf

2、統(tǒng)計(jì)ip訪問情況,要求分析nginx訪問日志,找出訪問頁面數(shù)量在前十位的ip

1
cataccess.log | awk '{print $1}' uniq -c | sort -rn | head -10

3、使用tcpdump監(jiān)聽主機(jī)為192.168.1.1,tcp端口為80的數(shù)據(jù),同時(shí)將輸出結(jié)果保存輸出

到tcpdump.log。

1
tcpdump 'host 192.168.1.1 and port 80' > tcpdump.log

4、利用Python打印前一天的本地時(shí)間,格式為'2016-03-29 13:58:34'

1
time.strftime('%y-%m-%d%H:%M%:%S' time.locatime(time.time() -86400))

5、用Python將‘123456’反轉(zhuǎn)為‘654321’

1
‘123456’[::-1]

6、利用Python執(zhí)行shell命令并取得返回結(jié)果

1
2
3
4
5
>>> import subprocess
>>> a=subprocess.popen('ls',shell=True,stdout=subprocoss.PIPE,
stderr=subprocess.PIPE)
>>>stdout,sterr = a.communicate()
>>>print stdout

8、請用Python繼承process,并寫一個(gè)并行執(zhí)行的類,并寫出使用過程。

1
2
3
4
5
6
7
8
9
10
11
12
import multiprocessing
import time
class ClockProcess(multiprocessing.Process):
    def __init__(self, interval):
        multiprocessing.Process.__init__(self)
        self.interval = interval
    def run(self):
        n = 5
        while n > 0:
            print("the time is {0}".format(time.ctime()))
            time.sleep(self.interval)
            n -= 1

9、有文件file1

a、請用shell查詢file1 里面空行的所在行號

1
#awk '$0 ~ /^$/ {print NR}' file1


1
grep -n "^$" file1

b、編寫ShellScript查詢file1 以abc結(jié)尾的行

1
grep "abc$" file1


1
sed -n '/abc$/ p' file1

c、打印出file1 文件第1 到第3 行

1
sed  -n '1,3p' file1

10、如何將本地80 端口的請求轉(zhuǎn)發(fā)到8080 端口,當(dāng)前主機(jī)IP 為192.168.2.1

1
Iptables –t nat -A PREROUTING -d 192.168.2.1 -p tcp  –dport 80 -j REDIRECT --to 8080

11、在11 月份內(nèi),每天的早上6 點(diǎn)到12 點(diǎn)中,每隔2 小時(shí)執(zhí)行一次/usr/bin/httpd.sh 怎么

實(shí)現(xiàn)

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

12、編寫個(gè)shell 腳本將/usr/local/test 目錄下大于100K 的文件轉(zhuǎn)移到/tmp目錄下

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


1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
filelist=$(ls  /usr/local/test -l | grep "^-" awk '{print $9}'
filepath="/usr/local/test"
for file in $filelist
do
    filesize=$(du -s $filepath$file |awk '{print $1}')
    if [ $filesize -gt 100]
    then
    mv $filepath$file /tmp/
fi
done

13、簡述raid0 raid1 raid5 三種工作模式的工作原理及特點(diǎn)。

 

1
2
RAID 0:帶區(qū)卷,連續(xù)以位或字節(jié)為單位分割數(shù)據(jù),并行讀/寫于多個(gè)磁盤上,因此具有很高的數(shù)據(jù)傳輸率,但它沒有數(shù)據(jù)冗余,
RAID 0 只是單純地提高性能,并沒有為數(shù)據(jù)的可靠性提供保證,而且其中的一個(gè)磁盤失效將影響到所有數(shù)據(jù)。因此,RAID 0 不能應(yīng)用于數(shù)據(jù)安全性要求高的場合。


  

1
2
RAID 1:鏡像卷,它是通過磁盤數(shù)據(jù)鏡像實(shí)現(xiàn)數(shù)據(jù)冗余,在成對的獨(dú)立磁盤上產(chǎn)生互為備份的數(shù)據(jù),不能提升寫數(shù)據(jù)效率。當(dāng)原始數(shù)據(jù)繁忙時(shí),可直接從鏡像拷貝中讀取數(shù)據(jù),因此RAID
1 可以提高讀取性能。RAID 1 是磁盤陣列中單位成本最高的,鏡像卷可用容量為總?cè)萘康?/2,但提供了很高的數(shù)據(jù)安全性和可用性。當(dāng)一個(gè)磁盤失效時(shí),系統(tǒng)可以自動切換到鏡像磁盤上讀寫,而不需要重組失效的數(shù)據(jù)。

       

1
RAID5:至少由3塊硬盤組成,分布式奇偶校驗(yàn)的獨(dú)立磁盤結(jié)構(gòu),它的奇偶校驗(yàn)碼存在于所有磁盤上,任何一個(gè)硬盤損壞,都可以根據(jù)其它硬盤上的校驗(yàn)位來重建損壞的數(shù)據(jù)(最多允許1塊硬盤損壞)。所以raid5可以實(shí)現(xiàn)數(shù)據(jù)冗余,確保數(shù)據(jù)的安全性,同時(shí)raid5也可以提升數(shù)據(jù)的讀寫性能。

14、oracle 數(shù)據(jù)庫備份方式

1
2
3
4
5
6
7
從物理與邏輯的角度分類:
物理備份:對數(shù)據(jù)庫操作系統(tǒng)的物理文件(如數(shù)據(jù)文件、控制文件、日志文件等)的備份,物理備份又分為冷備份和熱備份,前者是在關(guān)閉數(shù)據(jù)庫的時(shí)候進(jìn)行的,后者對正以歸檔日志方式進(jìn)行的數(shù)據(jù)庫備份,可以使用RMAN進(jìn)行數(shù)據(jù)庫的物理備份
邏輯備份:對數(shù)據(jù)庫邏輯組件(如表、表空間、存儲過程等數(shù)據(jù)庫對象)的備份邏輯備份的手段很多,如exp、數(shù)據(jù)泵expdp、數(shù)據(jù)庫閃回技術(shù)等
從數(shù)據(jù)庫的備份策略角度分類:
完全備份:每次對數(shù)據(jù)庫進(jìn)行完整備份
增量備份:只有那些在上次完全備份或者增量備份后被修改的文件才會被備份。
差異備份:備份那些自從上次完全備份之后被修改過的文件。

15、如何查看占用端口8080 的進(jìn)程

1
2
3
netstat -anpt | grep 8080
 lsof -i :8080

八、請寫出apache2.X 版本的兩種工作模式,以及各自工作原理。如何查看apache 當(dāng)前所支持的模塊,并且查看是工作在哪種模式下?

1
2
3
4
5
6
7
8
prefork(多進(jìn)程,每個(gè)子進(jìn)程產(chǎn)生一個(gè)線程)和worker(多進(jìn)程多線程,每個(gè)進(jìn)程生成多個(gè)線程)
  其主要工作方式是:當(dāng)Apache服務(wù)器啟動后,mpm_prefork模塊會預(yù)先創(chuàng)建多個(gè)子進(jìn)程(默認(rèn)為5個(gè)),每個(gè)子進(jìn)程只有一個(gè)線程,當(dāng)接收到客戶端的請求后,mpm_prefork模塊再將請求轉(zhuǎn)交給子進(jìn)程處理,并且每個(gè)子進(jìn)程同時(shí)只能用于處理單個(gè)請求。如果當(dāng)前的請求數(shù)將超過預(yù)先創(chuàng)建的子進(jìn)程數(shù)時(shí),mpm_prefork模塊就會創(chuàng)建新的子進(jìn)程來處理額外的請求。Apache總是試圖保持一些備用的或者是空閑的子進(jìn)程用于迎接即將到來的請求。這樣客戶端的請求就不需要在接收后等候子進(jìn)程的產(chǎn)生。
由于在mpm_prefork模塊中,每個(gè)請求對應(yīng)一個(gè)子進(jìn)程,因此其占用的系統(tǒng)資源相對其他兩種模塊而言較多。不過mpm_prefork模塊的優(yōu)點(diǎn)在于它的每個(gè)子進(jìn)程都會獨(dú)立處理對應(yīng)的單個(gè)請求,這樣,如果其中一個(gè)請求出現(xiàn)問題就不會影響到其他請求。Prefork在效率上要比Worker要高,但是內(nèi)存使用大得多不擅長處理高并發(fā)的場景。
  Worker模式(多線程多進(jìn)程):
和prefork模式相比,worker使用了多進(jìn)程和多線程的混合模式,worker模式也同樣會先預(yù)派生一些子進(jìn)程,然后每個(gè)子進(jìn)程創(chuàng)建一些線程,同時(shí)包括一個(gè)監(jiān)聽線程,每個(gè)請求過來會被分配到一個(gè)線程來服務(wù)。線程比起進(jìn)程會更輕量,因?yàn)榫€程是通過共享父進(jìn)程的內(nèi)存空間,因此,內(nèi)存的占用會減少一些,在高并發(fā)的場景下會比prefork有更多可用的線程,表現(xiàn)會更優(yōu)秀一些;另外,如果一個(gè)線程出現(xiàn)了問題也會導(dǎo)致同一進(jìn)程下的線程出現(xiàn)問題,如果是多個(gè)線程出現(xiàn)問題,也只是影響Apache的一部分,而不是全部。
總的來說,prefork方式速度要稍高于worker,然而它需要的cpu和memory資源也稍多于woker。
可以通過命令httpd  -M  或 httpd -l 可以查看apache 當(dāng)前的模塊
可以通過命令httpd  -V查看是工作在哪種模式下

16、你使用過監(jiān)控軟件嗎?說說其特點(diǎn)

1
2
3
4
5
6
7
8
使用nagios對服務(wù)器進(jìn)行監(jiān)控,其特點(diǎn)側(cè)重于對檢測項(xiàng)的狀態(tài)監(jiān)控,主要通過nrpe實(shí)現(xiàn)對遠(yuǎn)程主機(jī)的監(jiān)控,但也可以通過snmp對設(shè)備(如路由器、交換機(jī))進(jìn)行監(jiān)控,可實(shí)時(shí)實(shí)現(xiàn)手機(jī)短信、電子郵件、MSN、飛信報(bào)警。
使用cacti 對服務(wù)器進(jìn)行監(jiān)控,其特點(diǎn)側(cè)重性能和流量監(jiān)控并通過圖表顯示,主要通過snmp協(xié)議收集監(jiān)測項(xiàng)數(shù)據(jù),可實(shí)時(shí)實(shí)現(xiàn)手機(jī)短信、電子郵件、
使用zabbix對服務(wù)器進(jìn)行監(jiān)控,zabbix是完全開源的工具,整合了cacti和nagios等特性。
zabbix可以對主機(jī)的性能監(jiān)控、網(wǎng)絡(luò)設(shè)備性能監(jiān)控、數(shù)據(jù)庫、FTP 等通用協(xié)議監(jiān)控、多種告警方式、詳細(xì)的報(bào)表圖表繪制
支持自動發(fā)現(xiàn)網(wǎng)絡(luò)設(shè)備和服務(wù)器(可以通過配置自動發(fā)現(xiàn)服務(wù)器規(guī)則來實(shí)現(xiàn))
支持分布式,能集中展示、管理分布式的監(jiān)控點(diǎn),擴(kuò)展性強(qiáng)
可以自己開發(fā)完善各類監(jiān)控(根據(jù)相關(guān)接口編寫程序?qū)崿F(xiàn)),編寫插件容易,可以自定義監(jiān)控項(xiàng),報(bào)警級別的設(shè)置。
數(shù)據(jù)收集,支持 snmp(包括 trapping and polling ),IPMI,JMX,SSH,TELNET;

17、你對現(xiàn)在運(yùn)維工程師的理解和以及對其工作的認(rèn)識

1
運(yùn)維工程師在公司當(dāng)中責(zé)任重大,需要保證時(shí)刻為公司及客戶提供最高、最快、最穩(wěn)定、最安全的服務(wù)。運(yùn)維工程師的一個(gè)小小的失誤,很有可能會對公司及客戶造成重大損失,因此運(yùn)維工程師的工作需要嚴(yán)謹(jǐn)及富有創(chuàng)新精神。

18、第一部分 基礎(chǔ)題 

a. 僅列出 /test目錄下的所有目錄,請寫出完整命令

1
ls /test -l | grep "^d"

b. umask 022 ,請描述該命令的含義

1
umask設(shè)置文件或目錄的缺省權(quán)限,umask 022表示目錄的缺省權(quán)限為755,文件的缺省權(quán)限為644

c. 在排除 /test/a目錄的條件下,歸檔并gzip壓縮整個(gè)/test目錄,請寫出完整的操作命令t

1
tar zcvf backup.tar.gz --exclude /test/a /test

d. 查詢并列出 test進(jìn)程所打開的當(dāng)前所有文件,請寫出完整的操作命令

1
lsof -c test

e. 查詢并列出test.rpm包里所包含的所有文件,請寫出完整的操作命令

1
2
rpm -qpl
  test.rpm

f. 將 /test/a目錄建立軟鏈接到 /test/b目錄,請寫出完整的操作命令

1
ln -s /test/a test/b

g. 設(shè)置當(dāng)前用戶環(huán)境中 test變量為 123并使之立即生效,請寫出完整操作命令

1
export test=123

h. 設(shè)置系統(tǒng)當(dāng)前運(yùn)行級別中 test服務(wù)狀態(tài)為啟動時(shí)自動加載,請寫出完整操作命令

假設(shè)運(yùn)行級別為3級別

1
chkconfig  --level  3  test  on

k. 列出當(dāng)前系統(tǒng)中所有的網(wǎng)絡(luò)連接(包含進(jìn)程名),請寫出完整操作命令

1
2
3
4
5
6
7
8
9
netstat -antuple
(-a 顯示所有socket,包括正在監(jiān)聽的。
  -n 以網(wǎng)絡(luò)IP地址代替名稱,顯示出網(wǎng)絡(luò)連接情形。
  -t 顯示TCP協(xié)議的連接情況
  -u 顯示UDP協(xié)議的連接情況。
  -p 顯示指定協(xié)議信息。
    -l或--listening 顯示監(jiān)控中的服務(wù)器的Socket。
  -e 顯示以太網(wǎng)統(tǒng)計(jì)。此選項(xiàng)可以與 -s 選項(xiàng)結(jié)合使用。

j. 實(shí)時(shí)抓取并顯示當(dāng)前系統(tǒng)中tcp 80端口的網(wǎng)絡(luò)數(shù)據(jù)信息,請寫出完整操作命令

1
tcpdump -nn tcp port 80

19、第二部分綜合應(yīng)用
a. 請寫出5個(gè)你常用的系統(tǒng)或網(wǎng)絡(luò)維護(hù)工具的名稱

1
2
3
4
5
rhel  centos  ubuntu
iotop用于檢查 I/O 的使用情況
htop實(shí)質(zhì)上是 top 的一個(gè)增強(qiáng)版本。它更容易對進(jìn)程排序。
ping
traceroute

b.在nslookup使用中,請問如何查看test.com域中的MX記錄

1
2
3
4
5
6
7
#nslookup
>set type=mx
>test.comc. ftp ,ssh,smtp,pop3,https,請寫出這些服務(wù)的默認(rèn)端口ftp:21
ssh:22
smtp:25
pop3:110
https:443.25G)

d. 請問如何用iptables工具阻斷來自 192.168.0.1的所有網(wǎng)絡(luò)連接

1
iptable -I INPUT -s 192.168.0.1 -j DROP

e. 請簡要描述Linux系統(tǒng)下源代碼編譯方式安裝軟件的大致步驟

1
2
3
4
5
tar釋放源碼包
cd 切換到解壓目錄
./configure 配置
make 編譯
make  install  安裝

f. 請寫出Tomcat程序的主配置文件名

1
server.xml

g. Mysql客戶端工具中,請問如何查詢當(dāng)前所有的連接進(jìn)程信息

1
2
mysql -u user -p password
-e "show processlist"

20. 服務(wù)器開不了機(jī)怎么解決一步步的排查

1
2
3
硬件有無報(bào)警燈提示
主面板液晶面板有沒有提示什么報(bào)錯信息,例如raid錯誤的提示信息
先排除硬件還是軟件問題

十四. Linux開機(jī)模式

1
2
0 - 表示關(guān)閉系統(tǒng)(千萬不要把默認(rèn)設(shè)置成0哦?。? - 單用戶模式2 - 多用戶模式,沒有NFS服務(wù)3 - 多用戶文本模式5 - 圖形模式6 - 系統(tǒng)重新啟動
過修改/etc/inittab,使系統(tǒng)在啟動時(shí)進(jìn)入不同模式。

21. Linux系統(tǒng)中病毒怎么解決

1
2
3
4
5
找到病毒文件然后刪除;中毒之后一般機(jī)器cpu、內(nèi)存使用率會比較高,機(jī)器向外發(fā)包等異常情況,排查方法:
linux服務(wù)器流量劇增,用iftop查看有連接外網(wǎng)的情況。netstat連接的外網(wǎng)ip和端口。#top命令找到cpu使用率高的進(jìn)程,一般病毒文件命名都比較亂#可以用ps aux 查看是否有不明進(jìn)程,找出病毒文件的位置#rm
-f 命令刪除病毒文件#檢查計(jì)劃任務(wù)、開機(jī)啟動項(xiàng)和病毒文件目錄有無其他可疑文件等
chkconfig    --list     |  grep  3:on
服務(wù)器啟動級別是3的,檢查一下了開機(jī)啟動項(xiàng),沒有特別明顯的服務(wù)。然后檢查了一下開機(jī)啟動的一個(gè)文件,more   /etc/rc.local

22. 發(fā)現(xiàn)一個(gè)病毒文件你刪了他又自動創(chuàng)建怎么解決

1
2
ps axu一個(gè)個(gè)排查,方法是查看可疑的用戶和系統(tǒng)相似而又不是的進(jìn)程找出進(jìn)程可疑。
殺掉所有與病毒相關(guān)的進(jìn)程,然后刪掉病毒這個(gè)可執(zhí)行文件,最后刪除病毒創(chuàng)建的文件

十七. 日志文件很大,怎么把他們切分

1
2
3
4
5
6
7
8
9
針對這些日志按每或每周進(jìn)行分割,例如只保留一周的數(shù)據(jù),用logrotate來實(shí)現(xiàn)日志的輪替?;蛘呔帉懭罩疚募笮”O(jiān)控腳本,定期檢查該日志文件的大小,接近設(shè)定大小時(shí),進(jìn)行輪換。
如果日志文件存在并且很大,可以用Linux下的split進(jìn)行文件分割:
模式一:指定分割后文件行數(shù)
Split:按指定的行數(shù)截?cái)辔募袷? split [-n] file [name]參數(shù)說明:-n: 指定截?cái)嗟拿恳晃募拈L度,不指定缺省為1000行file: 要截?cái)嗟奈募ame: 截?cái)嗪螽a(chǎn)生的文件的文件名的開頭字母,不指定,缺省為x,即截?cái)嗪螽a(chǎn)生的文件的文件名為xaa,xab....直到xzz
  
模式二:指定分割后文件大小
命令:split -b 10m server.log server_part_
其中server.log是要分割的文件,server_part_是分割文件的前綴。
對二進(jìn)制文件我們同樣也可以按文件大小來分隔

23. tcp/ip七層模型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
應(yīng)用層 (Application):
網(wǎng)絡(luò)服務(wù)與最終用戶的一個(gè)接口。
協(xié)議有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
表示層(Presentation Layer):
數(shù)據(jù)的表示、安全、壓縮。(在五層模型里面已經(jīng)合并到了應(yīng)用層)
格式有,JPEG、ASCll、DECOIC、加密格式等
會話層(Session Layer):
建立、管理、終止會話。(在五層模型里面已經(jīng)合并到了應(yīng)用層)
對應(yīng)主機(jī)進(jìn)程,指本地主機(jī)與遠(yuǎn)程主機(jī)正在進(jìn)行的會話
傳輸層 (Transport):
定義傳輸數(shù)據(jù)的協(xié)議端口號,以及流控和差錯校驗(yàn)。
協(xié)議有:TCP UDP,數(shù)據(jù)包一旦離開網(wǎng)卡即進(jìn)入網(wǎng)絡(luò)傳輸層
網(wǎng)絡(luò)層 (Network):
進(jìn)行邏輯地址尋址,實(shí)現(xiàn)不同網(wǎng)絡(luò)之間的路徑選擇。
協(xié)議有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
數(shù)據(jù)鏈路層 (Link):
建立邏輯連接、進(jìn)行硬件地址尋址、差錯校驗(yàn)等功能。(由底層網(wǎng)絡(luò)定義協(xié)議)
將比特組合成字節(jié)進(jìn)而組合成幀,用MAC地址訪問介質(zhì),錯誤發(fā)現(xiàn)但不能糾正。
物理層(Physical Layer):

24. 你常用的Nginx模塊,用來做什么

1
2
3
4
5
6
7
rewrite模塊,實(shí)現(xiàn)重寫功能
access模塊:來源控制
ssl模塊:安全加密
ngx_http_gzip_module:網(wǎng)絡(luò)傳輸壓縮模塊
ngx_http_proxy_module 模塊實(shí)現(xiàn)代理
ngx_http_upstream_module模塊實(shí)現(xiàn)定義后端服務(wù)器列表
ngx_cache_purge實(shí)現(xiàn)緩存清除功能

25、請列出你了解的web服務(wù)器負(fù)載架構(gòu)。

1
2
3
4
Nginx
haproxy
keepalived
lvs

歡迎加技術(shù)群:323779636(Shell/Python運(yùn)維開發(fā)群)


本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號