一、有文件file1
1. 查詢file1里面空行所在的行號;
答:grep -n ‘^$’ file1
2. 查詢file1中以abc結(jié)尾的行;
答:grep ‘a(chǎn)bc$’ file1
3. 打印file1 文件的第一到三行;
答:sed ?-n ‘1,3’p file1
二、寫一條放行80端口的防火墻規(guī)則。
答:iptables -I INPUT -p tcp --dport 80 -j ACCEPT
三、寫一條192.168.10.0網(wǎng)段從網(wǎng)關(guān)192.168.9.1出去的路由
答:route add -net 192.168.10.0/24 gw 192.168.9.1
四、 每天早上6點(diǎn)到12點(diǎn),每隔2小時(shí)執(zhí)行一次/usr/bin/httpd.sh怎么實(shí)現(xiàn)
答:crontab -e 然后添加一行
0 6,8,10,12 * * * /bin/bash /usr/bin/httpd.sh
五、編寫個(gè)shell腳本判斷根目錄下有沒有abc目錄,如果沒有就發(fā)郵件給admin@121.com
答:#!/bin/bash
if [ ! -d /abc ]
then
echo “Director /abc is gone, please check.”| mail -s ‘directory /abc is gone’ admin@121.com
fi
六、Raid0,raid1,raid5原理
答案參考第5套11題
七、備份mysql數(shù)據(jù)庫test庫
答:mysqldump -uroot -p’passwd’ test > /data/test.sql
八、如何查看占用端口8080的進(jìn)程
答:lsof -i :8080
九、Apache有幾種工作模式,分別介紹下其特點(diǎn),并說明什么情況下采用不同的工作模式?
答案:Web服務(wù)器Apache目前一共有三種穩(wěn)定的MPM(Multi-Processing Module,多進(jìn)程處理模塊)模式。它們分別是prefork,worker和event,它們同時(shí)也代表這Apache的演變和發(fā)展。使用httpd -V 命令查看。在configure配置編譯參數(shù)的時(shí)候,可以使用 --with-mpm=prefork|worker|event 來指定編譯為那一種MPM,當(dāng)然也可以用編譯為三種都支持:--enable-mpms-shared=all,這樣在編譯的時(shí)候會(huì)在modules目錄下自動(dòng)編譯出三個(gè)MPM文件的so,然后通過修改httpd.conf配置文件更改MPM。
1.Prefork MPM
Prefork MPM實(shí)現(xiàn)了一個(gè)非線程的、預(yù)派生的web服務(wù)器。它在Apache啟動(dòng)之初,就先預(yù)派生一些子進(jìn)程,然后等待連接;可以減少頻繁創(chuàng)建和銷毀進(jìn)程的開銷,每個(gè)子進(jìn)程只有一個(gè)線程,在一個(gè)時(shí)間點(diǎn)內(nèi),只能處理一個(gè)請求。這是一個(gè)成熟穩(wěn)定,可以兼容新老模塊,也不需要擔(dān)心線程安全問題,但是一個(gè)進(jìn)程相對占用資源,消耗大量內(nèi)存,不擅長處理高并發(fā)的場景。
2.Worker MPM
和prefork模式相比,worker使用了多進(jìn)程和多線程的混合模式,worker模式也同樣會(huì)先預(yù)派生一些子進(jìn)程,然后每個(gè)子進(jìn)程創(chuàng)建一些線程,同時(shí)包括一個(gè)監(jiān)聽線程,每個(gè)請求過來會(huì)被分配到一個(gè)線程來服務(wù)。線程比起進(jìn)程會(huì)更輕量,因?yàn)榫€程是通過共享父進(jìn)程的內(nèi)存空間,因此,內(nèi)存的占用會(huì)減少一些,在高并發(fā)的場景下會(huì)比prefork有更多可用的線程,表現(xiàn)會(huì)更優(yōu)秀一些;另外,如果一個(gè)線程出現(xiàn)了問題也會(huì)導(dǎo)致同一進(jìn)程下的線程出現(xiàn)問題,如果是多個(gè)線程出現(xiàn)問題,也只是影響Apache的一部分,而不是全部。由于用到多進(jìn)程多線程,需要考慮到線程的安全了,在使用keep-alive長連接的時(shí)候,某個(gè)線程會(huì)一直被占用,即使中間沒有請求,需要等待到超時(shí)才會(huì)被釋放(該問題在prefork模式下也存在)。
3.Event MPM
這是Apache最新的工作模式,它和worker模式很像,不同的是在于它解決了keep-alive長連接的時(shí)候占用線程資源被浪費(fèi)的問題,在event工作模式中,會(huì)有一些專門的線程用來管理這些keep-alive類型的線程,當(dāng)有真實(shí)請求過來的時(shí)候,將請求傳遞給服務(wù)器的線程,執(zhí)行完畢后,又允許它釋放。這增強(qiáng)了在高并發(fā)場景下的請求處理。
十.簡述mysql主從復(fù)制過程
答:Mysql的 Replication 是一個(gè)異步的復(fù)制過程,從一個(gè) Mysql instace(我們稱之為 Master)復(fù)制到另一個(gè) Mysql instance(我們稱之 Slave)。在 Master 與 Slave 之間的實(shí)現(xiàn)整個(gè)復(fù)制過程主要由三個(gè)線程來完成,其中兩個(gè)線程(Sql線程和IO線程)在 Slave 端,另外一個(gè)線程(IO線程)在 Master 端。
要實(shí)現(xiàn) MySQL 的 Replication ,首先必須打開 Master 端的Binary Log(mysql-bin.xxxxxx)功能,否則無法實(shí)現(xiàn)。因?yàn)檎麄€(gè)復(fù)制過程實(shí)際上就是Slave從Master端獲取該日志然后再在自己身上完全順序的執(zhí)行日志中所記錄的各種操作。打開MySQL的 Binary Log可以通過在啟動(dòng)MySQL Server的過程中使用“l(fā)og-bin”參數(shù)選項(xiàng),或者在my.cnf配置文件中的mysqld參數(shù)組([mysqld]標(biāo)識后的參數(shù)部分)增加 “l(fā)og-bin” 參數(shù)項(xiàng)。
MySQL復(fù)制的基本過程如下:
1.Slave上面的IO線程連接上Master,并請求從指定日志文件的指定位置(或者從最開始的日志)之后的日志內(nèi)容;
2.Master接收到來自Slave的IO線程的請求后,通過負(fù)責(zé)復(fù)制的IO線程根據(jù)請求信息讀取指定日志指定位置之后的日志信息,返回給Slave端的IO線程。返回信息中除了日志所包含的信息之外,還包括本次返回的信息在Master端的Binary Log文件的名稱以及在Binary Log中的位置;
3.Slave的IO線程接收到信息后,將接收到的日志內(nèi)容依次寫入到 Slave 端的Relay Log文件(mysql-relay-bin.xxxxxx)的最末端,并將讀取到的Master端的bin-log的文件名和位置記錄到master- info文件中,以便在下一次讀取的時(shí)候能夠清楚的高速M(fèi)aster“我需要從某個(gè)bin-log的哪個(gè)位置開始往后的日志內(nèi)容,請發(fā)給我”
4.Slave的SQL線程檢測到Relay Log中新增加了內(nèi)容后,會(huì)馬上解析該Log文件中的內(nèi)容成為在Master端真實(shí)執(zhí)行時(shí)候的那些可執(zhí)行的Query語句,并在自身執(zhí)行這些Query。這樣,實(shí)際上就是在Master端和Slave端執(zhí)行了同樣的Query,所以兩端的數(shù)據(jù)是完全一樣的。