繼續屌絲回答網傳面試題html
後續將整理出豪鷲親身經歷面試過的公司運維技術面的題目(非筆試題目,技術面運維經理的提問),並也附上答案。前端
敬請期待。。。。。node
上海某證券公司:mysql
Linux開機流程linux
答:過程以下:ios
<1>開啓電源,加載BIOS————當你按下電源按鈕時,服務器會檢測系統外圍關鍵設備(如:CPU、內存、顯卡、I/O、鍵盤鼠標等)是否正常,加載BIOS信息,由於BIOS中包含了CPU的相關信息,設備啓動順序信息,硬盤信息,內存信息,時鐘信息等等,加載以後,服務器知道應該去讀取哪一個硬件設備了。web
<2>讀取MBR————硬盤上第0磁道第一個扇區被稱爲MBR(Master Boot Record,主引導記錄),大小是512字節,存放了預啓動信息和分區表信息面試
<3>Boot Loader————Boot Loader就是在操做系統內核運行以前運行的一段小程序,經過這段小程序,能夠初始化硬件設備,創建內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便爲最終調用操做系統內核作好一切準備。Boot Loader有若干種,其中以Grub、Lilo最爲常見,以Grub爲例,系統讀取內存中的grub配置信息(centos 6.x是grub.conf),並按照此配置信息來啓動不一樣的操做系統。算法
<4>加載內核————根據grub設定的內核映像所在的路徑,系統讀取內存映像,並進行解壓縮操做,此時屏幕通常會輸出「Uncompressing linux」的提示,當解壓縮內核完成後,屏幕輸出「OK,booting the kernel」。sql
<5>用戶層init依據inittab文件來設定運行等級————內核被加載後,第一個運行的程序即是/sbin/init,該文件會讀取/etc/inittb文件,並依據此文件來進行初始化工做。通常狀況下,要麼是等級3(命令行界面),要麼是等級5(圖形化界面)。
<6>init進程執行rc.sysinit————在設定了運行等級以後,Linux系統執行的第一個用戶層文件就是/etc/rc.d/sysinit腳本程序,它的工做包括設定PATH、設定網絡配置、啓動swap分區、設定/proc等等。
<7>啓動內核模塊————具體是依據/etc/modules.conf文件或/etc/modulefiles(centos 6.x)目錄下的文件來裝載內核模塊。
<8>執行不一樣運行級別的腳本程序————根據運行級別的不一樣,系統會運行rc0.d到rc6.d中相應的腳本程序來完成相應的初始化工做和啓動相應的服務。
<9>執行/etc/rc.d/rc.local————rc.local就是在一切初始化工做後,linux留給用戶進行個性化的地方,能夠把你想設置和啓動的東西放到這裏。
<10>執行/bin/login程序,進入登陸狀態————此時,系統哥已經進入到等待用戶輸入username和password的時候了。
2.TCP三次握手,四次揮手
答:在TCP/IP協議中,TCP協議提供可靠的鏈接服務,採用三次握手創建一個鏈接。
說明:SYN(synchronous創建聯機) ACK(acknowledgement 確認) PSH(push傳送) FIN(finish結束) RST(reset重置) URG(urgent緊急)
Sequence number(順序號碼) Acknowledge number(確認號碼)
第一次握手————創建鏈接時,客戶端發送syn包(syn=j)到服務器,並進入syn_send狀態,等待服務器確認;
第二次握手————服務器收到syn包,必須確認客戶的syn(ack=j+1),同時本身也發送一個syn包(syn=k),即syn+ack包,此時服務器進入syn_recv狀態;
第三次握手————客戶端收到服務器的syn+ack包,向服務器發送確認包ack(ack=k+1),此包發送完畢,客戶端和服務器進入established狀態,完成三次握手,客戶端與服務器開始傳送數據。
第一次揮手————客戶端發送一個FIN,用來關閉客戶端到服務器的數據傳送,客戶端進入FIN_WAIT_1狀態;
第二次揮手————服務器收到FIN後,發送一個ACK包給客戶端,確認序號爲收到序號+1(與SYN相同,一個FIN佔用一個序號),服務器進入CLOSE_WAIT狀態;
第三次揮手————服務器發送一個FIN,用來關閉服務器到客戶端的數據傳送,服務器進入LAST_ACK狀態;
第四次揮手————客戶端收到FIN後,客戶端進入TIME_WAIT狀態,接着發送一個ACK給服務器,確認序號爲收到序號+1,服務器進入CLOSED狀態,完成四次揮手。
3.如何將本地80端口的請求轉發到8080端口,當前主機IP爲192.168.16.1,其中本地網卡eth0
答:iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp –dport 80 -j REDIRECT –to-ports 8080
4.什麼是NAT,常見分爲那幾種,DNAT與SNAT有什麼不一樣,應用事例有那些?
答:NAT(Network Address Translation,網絡地址轉換)是將IP數據包頭中的IP地址轉換爲另外一個IP地址的過程。分爲DNAT (目的網絡地址轉換)和SNAT(源網絡地址轉換)……
5.包過濾防火牆與代理應用防火牆有什麼區別,能列舉幾種相應的產品嗎?
答:包過濾防火牆是根據包頭進行的過濾,而且是處於網絡層的,根據包的源ip地址,目標ip地址,協議類型,端口號,進行過濾;代理應用防火牆工做在應用層,他使用代理服務器技術,將內網對外網的訪問,變爲防火牆對外網的訪問,能夠對包的內容進行分辨,從而過濾。
代理應用防火牆:天融信GFW4000
包過濾防火牆:華爲 NE 16E
6.iptables是否支持time時間控制用戶行爲,若有請寫出具體操做步驟。
答:iptables+crontab。
7.說出你知道的幾種linux/unix發行版本。
答: Linux:Redhat、CentOS、Fedora、SuSE、Gentoo、Debian、Ubuntu
Unix:FreeBSD、Solaris、AIX、HP
8.列出linux常見打包工具並寫相應解壓縮參數(至少三種)
答:tar -zxf 、 gzip -d 、 unzip 、 bzip2 -d 、 unrar
9.計劃每星期天早8點服務器定時發送一封內容爲:test的郵件。發信人:user1@ab.com 收信人:test1@example.com,如何實現?
答:豪鷲習慣用sendEmail工具發送郵件
安裝:
tar zxf sendEmail-v1.56.tar.gz
cd sendEmail-v1.55
cp sendEmail /usr/local/bin
chmod 0755 /usr/local/bin/sendEmail
chown nagios:nagios /usr/local/bin/sendEmail
/usr/local/bin/sendEmail -f user1@ab.com -t test1@example.com -s smtp.163.com -u "this is test" -xu username -xp password -m test
選項參數說明:
-f 表示發送者的郵箱
-t 表示接收者的郵箱
-s 表示SMTP服務器的域名或者ip
-u 表示郵件的主題
-xu 表示SMTP驗證的用戶名
-xp 表示SMTP驗證的密碼(注意,這個密碼貌似有限制,例如我用f!2dafaffad就不能被正確識別)
-m 表示郵件的內容
-cc 表示抄送
-bcc 表示暗抄送
-o message-file=mail.html 以mail.html文件的內容做爲郵件內容發送
-o message-content-type=html 郵件內容的格式,html表示它是html格式
-o message-charset=utf8 郵件內容編碼</pre>
-a /data/site/a.rar 發送ttlsa.rar這個文件, 做爲郵件附件
10.當用戶在瀏覽器當中輸入一個網站,說說計算機對dns解釋通過那些流程?注:本機跟本地dns尚未緩存。
答:
一、當客戶機在瀏覽器輸入網站地址,並回車,客戶機發出查詢請求,首先在本地計算機的緩存中查找。若是在本地沒法得到查詢信息,則將查詢請求發給DNS服務器。
二、首先客戶機將域名查詢請求發送到本地DNS服務器,當本地DNS服務器接到查詢後,首先在該服務器管理的區域的記錄中查找,若是找到該記錄,則利用此記錄進行解析;若是沒有區域信息能夠知足查詢要求,服務器在本地的緩存中查找。
三、若是本地服務器不能在本地找到客戶機查詢的信息,將客戶機請求發送到根域名DNS服務器。
四、根域名服務器負責解析客戶機請求的根域部分,它將包含下一級域名信息的DNS服務器地址返回給客戶機的DNS服務器地址。
五、客戶機的DNS服務器利用根域名服務器解析的地址訪問下一級DNS服務器,獲得再下一級域個人DNS服務器地址。
六、按照上述遞歸方法逐級接近查詢目標,最後在有目標域名的DNS服務器上找到相應IP地址信息。
七、客戶機的本地DNS服務器將遞歸查詢結果返回客戶機。
八、客戶機利用從本地DNS服務器查詢獲得的IP訪問目標主機,即想訪問的網站,也就完成了一個解析過程。
11.咱們都知道,dns既採用了tcp協議,又採用了udp協議,何時採用tcp協議?何時採用udp協議?爲何要這麼設計?
答:
A.從數據包大小上分:UDP的最大包長度是65507個字節,相應dns查詢的時候數據包長度超過512個字節,這時解析器一般使用TCP重發原來的請求,由於tcp協議主要用於DNS服務器之間傳遞較大塊的信息,例如同步數據庫,UDP用戶普通的dns查詢。
B.從協議自己分:大部分的狀況下使用UDP協議,你們都知道UDP協議是一種不可靠的協議,dns不像其它的使用UDP的Internet應用 (如:TFTP,BOOTP和SNMP等),大部分集中在局域網,dns查詢和響應須要通過廣域網,分組丟失和往返時間的不肯定性在廣域網比局域網上更 大,這就要求dns客戶端須要好的重傳和超時算法,這時候使用TCP。
這樣設計是由於傳輸數據的尺寸比較大,而且對數據的精確要求比較高,採用tcp的方式能夠保證數據的完整性和正確性。
12.一個EXT3的文件分區,當使用touch test.file命令建立一個新文件時報錯,報錯的信息是提示磁盤已滿,可是採用df -h命令查看磁盤大小時,只使用了,60%的磁盤空間,爲何會出現這個狀況,說說你的理由。
答:磁盤配額或者inode耗盡。
13.咱們都知道FTP協議有兩種工做模式,說說它們的大概的一個工做流程?
14.編寫個shell腳本將當前目錄下大於100K的文件轉移到/tmp目錄下
答:豪鷲提供兩種方法————
A.使用for循環結合awk去讀取目錄下列出的文件大小,大於100k的文件mv到tmp下;
B.使用find命令;
具體以下:
法1:for結合awk
[root@zintao01 file]# cat mvfile.sh
#!/bin/bash
#script for move currently dir to /tmp which size is bigger than 100k;
#create by haojiu;
#date 2015-x-x
for file in `ls -l | sed -e '1d' | awk '$5 > 102400 {print$NF}'`;
do
mv $file /tmp/
done
法2:find命令
[root@haojiu file]# find ./ -type f -size +100k -exec mv {} /tmp/ \;
15.apache有幾種工做模式,分別介紹下其特色,並說明什麼狀況下采用不一樣的工做模式?
答:apache主要有兩種工做模式:prefork(預派生,默認安裝模式)和worker(支持混合的多線程多進程的多路處理模塊,能夠在編譯的時候加參數–with-mpm- worker選擇工做模式)
prefork的特色:
一、prefork MPM 使用多個子進程,每一個子進程只有一個線程。每一個進程在某個肯定的時間只能維持一個鏈接。這種模式能夠沒必要在請求到來時再產生新的進程,從而減少了系統開銷。
二、能夠防止意外的內存泄漏,但這種模式消耗的內存比較大;
三、在服務器負載降低的時候會自動減小子進程數
worker的特色:
worker MPM 使用多個子進程,每一個子進程有多個線程。每一個線程在某個肯定的時間只能維持一個鏈接。一般來講,在一個高流量的HTTP服務器上,Worker MPM是個比較好的選擇,由於Worker MPM的內存使用比Prefork MPM要低得多。但worker MPM也由不完善的地方,假如一個線程崩潰,整個進程就會連同其任何線程一塊兒"死掉".因爲線程共享內存空間,因此一個程式在運行時必須被系統識別爲"每 個線程都是安全的"。
16.編寫shell腳本獲取本機的IP/netmask。
答:豪鷲提供如下幾種獲取方法,僅供參考;
法1:直接經過截取ifconfig命令運行結果
[root@zintao01 ~]# cat getIP.sh
#!/bin/bash
#This script using for get IP and NETMASK.
#create by haijiu
#date 2015-x-x
#獲取IP和NETMASK也能夠有如下幾種方法,任選其一便可;
#IP=`ifconfig eth0|grep -w 'inet'|sed 's/^.*addr://g'|sed 's/ Bcast.*$//g'`
#NETMASK=`ifconfig eth0 |grep -w 'inet'|sed 's/^.*Mask://g'`
#IP=`ifconfig eth0|grep 'inet addr'|cut -d ":" -f2|cut -d " " -f1`
#NETMASK=`ifconfig eth0|grep 'inet addr'|cut -d ":" -f4`
IP=`ifconfig eth0 |grep "inet addr"|awk -F: '{print $2}'|awk '{print $1}'`
NETMASK=`ifconfig eth0 |grep "inet addr"|awk -F: '{print $4}'|awk '{print $1}'`
echo "$IP/$NETMASK"
法2:經過ifconfig-eth0配置文件獲取(此種方法適用於有固定的靜態IP地址,不過一般服務器都是有固定IP地址的~_~)
[root@haojiu ~]# cat getIP.sh
#!/bin/bash
#This script using for get IP and NETMASK.
#create by haijiu
#date 2015-x-x
#此種方法適用於有固定的靜態IP地址
#一樣豪鷲這裏也提供兩種獲取方法,僅供參考;
file=」/etc/sysconfig/network-scripts/ifcfg-eth0″
if [ -f $file ] ;then
#IP=`grep "IPADDR" $file|awk -F"=" '{ print $2 }'`
#NETMASK=`grep "NETMASK" $file|awk -F"=" '{ print $2 }'`
#IP=`grep IPADDR $file|cut -d= -f2`
#NETMASK=`grep NETMASK $file|cut -d= -f2`
IP=`cat $file|grep IPADDR|cut -d= -f2`
NETMASK=`cat $file|grep NETMASK|cut -d= -f2`
echo "$IP/$NETMASK"
exit 1
fi
17.簡述DDOS***的原理,有沒有解決辦法?有,如何解決?
答:分佈式服務拒絕***就是用一臺主服務器來控制N臺肉雞對目標服務器進行合理的資源請求,致使服務器資源耗盡而不能進行正常的服務。
幾種流行的DDOS***方式:SYN/ACK FLOOD***、TCP全鏈接***、CC***(百科:***者藉助代理服務器生成指向受害主機的合法請求,實現DDOS,和假裝就叫:cc(ChallengeCollapsar)。CC主要是用來***頁面的。)
一個簡單的測試: 首先是網站若是打不開的話,能夠嘗試着用3389鏈接一下服務器看看,而後還能夠用PING命令來測試,再一種方式就是用telnet來登陸80端口看看,看會不會出現黑屏。若是這些方式測試都鏈接不上的話,那就說明受到DDOS***了。
而後若是除了80端口以外的其餘端口鏈接都正常,PING命令測試也正常,但就是80端口訪問不了,而後看看IIS是否正常,能夠把80端口改爲其餘端口測試,若是能夠正常訪問,那就說明極可能受到CC***。
防護DDOS***:
<1>要有充足的網絡帶寬和穩定安全的機房:選擇口碑好、服務好、安全防禦好點的機房,網絡帶寬直接決定了能抗受***的能力。
<2>軟硬設備的防禦:硬件DDOS防火牆黑洞、冰盾都不錯,軟件如web服務器都有相應的ddos防禦模塊,iptables,作單IP的併發限制,流量限制,syn及部分***限制。
<3>網站架構優化,避免單點提供服務,集羣,冗餘,負載均衡、緩存技術的架設。
<4>服務器系統自身的優化及安全參數調配
<5>採用高性能的網絡設備
18.簡述linux下編譯內核的意義與步驟,有作過LFS嗎?有,請簡述過程,注意哪些,意義。
答:編譯內核的意義在於使系統更加精簡化,更爲適合自身業務提供服務,減去不少沒必要要的預安裝功能,使系統能更穩定提供服務;
內核編譯的通常步驟:
一、準備工做:備份相關文件,下載並解壓Linux新內核;
二、清除從前編譯內核時殘留的.o文件和沒必要要的關聯;
三、配置內核,修改相關參數;
四、正確設置關聯文件
五、make clean
六、編譯內核
七、編譯模塊
八、安裝模塊
九、使用新內核
十、從新生成ram磁盤
十一、重啓服務器
19.你的5W,併發是如何作的,架構是什麼?LVS,採用什麼模式?這個模式的優勢是什麼? 採用的什麼調度方法?爲何採用這個調度方法?你還知道哪些?前端調度有幾臺服務器,單臺機器併發多少?你是如何優化系統的?作了那些配置?
答:通常來說,lvs架構頂住5w併發是沒問題的。具體看公司的服務器架構,通常使用最多的是DR模式,其優勢是:調度器只是分發請求,應答包經過單獨的路由方法返回給客戶端,與TUN模式相比,DR模式不須要隧道結構,
20.raid原理
答:raid中文是「獨立冗餘磁盤陣列」,它的工做原理:RAID按照實現原理的不一樣分爲不一樣的級別,不一樣的級別之間工做模式是有區別的。整個的RAID結構是一些磁盤結構,經過對磁盤進行組合達到提升效率,減小錯誤的目的。
RAID 0————無差錯控制的帶區組,要實現RAID0必需要有兩個以上硬盤驅動器,RAID0實現了帶區組,數據並非保存在一個硬盤上,而是分紅數據塊保存在不一樣驅動器上。在全部的級別中,RAID0的速度是最快的。可是RAID0沒有冗餘功能的,若是一個磁盤(物理)損壞,則全部的數據都沒法使用。
RAID 1————鏡象結構,RAID 1的數據安全性在全部的RAID級別上來講是最好的。可是其磁盤的利用率卻只有50%,是全部RAID級別中最低的。
RAID5————分佈式奇偶校驗的獨立磁盤結構,RAID5的讀出效率很高,寫入效率通常,塊式的集體訪問效率不錯,容許單個磁盤出錯,,任何一個硬盤損壞,均可以根據其它硬盤上的校驗位來重建損壞的數據。硬盤的利用率爲n-1。 可是它對數據傳輸的並行性解決很差,並且控制器的設計也至關困難。
RAID10————高可靠性與高效磁盤結構,這種結構無非是一個帶區結構加一個鏡象結構,由於兩種結構各有優缺點,所以能夠相互補充,達到既高效又高速還能夠的目的。你們能夠結合兩種結構的優勢和缺點來理解這種新結構。這種新結構的價格高,可擴充性很差。主要用於容量不大,但要求速度和差錯控制的數據庫中。
21.如何查看佔用80端口的進程,並清理該端口進程。
答:使用命令lsof -i:80查看佔用80端口的進程,使用命令pkill該進程
或者直接使用命令:lsof -i:80|sed '1d'|awk '{print $1}'|xargs kill
22.你對什麼數據庫比較瞭解?oracle裝過嗎?什麼版本?mysql,說說有那些引擎,對mysql優化怎麼看?備份都是怎麼備份的。主從複製,是實時的嗎?有添加過10W條左右的數據測試過嗎?還問了些mysql的基礎問題。
答:豪鷲我的的狀況,一個一個問題來:
A.平時用mysql比較稍微多些,oracle也用過,但也只是接觸一些皮毛,由於有專門的DBA管理和權限控制的緣由;
B.本地虛擬機和公司測試環境仍是有安裝過oracle,版本是Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production;
C.mysql的存儲引擎有不少,經常使用的有四種存儲引擎:MyISAM、InnoDB、MEMORY和MERGE,其中以MyISAM和InnoDB最爲常見。
MyISAM:不支持事務,也不支持外鍵,尤爲是訪問速度快,對事務完整性沒有要求或者以SELECT、INSERT爲主的應用基本均可以使用這個引擎來建立表。
InnoDB:InnoDB給MySQL提供了具備提交,回滾和崩潰恢復能力的事務安全存儲引擎。InnoDB鎖定在行級而且也在SELECT語句提供一個Oracle風格一致的非鎖定讀。這些特點增長了多用戶部署和性能。可是對比MyISAM的存儲引擎,InnoDB寫的處理效率差一些而且會佔用更多的磁盤空間以及保留數據和索引。
MEMORY:memory使用存在內存中的內容來建立表。每一個MEMORY表實際對應一個磁盤文件,格式是.frm。MEMORY類型的表訪問很是快,由於它到數據是放在內存中的,而且默認使用HASH索引,可是一旦服務器關閉,表中的數據就會丟失,但表還會繼續存在。
MERGE:merge存儲引擎是一組MyISAM表的組合,這些MyISAM表結構必須徹底相同,MERGE表中並無數據,對MERGE類型的表能夠進行查詢、更新、刪除的操做,這些操做其實是對內部的MyISAM表進行操做。
補充:MyISAM存儲引擎和InnoDB存儲引擎的區別————MyISAM類型不支持事務處理等高級處理,而InnoDB類型支持。MyISAM類型的表強調的是性能,其執行數度比InnoDB類型更快,可是不提供事務支持,而InnoDB提供事務支持以及外部鍵等高級數據庫功能。
兩種類型最主要的差異就是Innodb支持事務處理與外鍵和行級鎖。而MyISAM不支持.因此MyISAM每每就容易被人認爲只適合在小項目中使用。做爲使用MySQL的用戶角度出發,Innodb和MyISAM都是比較喜歡的,若是數據庫平臺要達到需求:99.9%的穩定性,方便的擴展性和高可用性來講的話,MyISAM絕對是首選。而InnoDB的理想使用場合則是高併發,更新操做比較多的表。須要使用事務的表。對自動災難恢復有要求的表。
D.MySQL優化:
E.Mysql備份:豪鷲的備份策略是每週日凌晨3點作全備,天天凌晨3點作增備,以防萬一,我還保留9天內的binlog文件,備份好的文件在本地磁盤保留一份,同時經過ftp自動上傳到遠程的存儲服務器上,而後再利用腳本監控Mysql的備份腳本是否正常工做。
F.主從複製:有主從複製(異步)、半同步複製、基於SSL複製,豪鷲採用的是異步的主從複製,異步複製的好處在於它比同步複製快。
23.cacti和nagios各有什麼優點,你用的cacti版本號多少?你都監控過哪些服務?報警是如何實現的?
答:cacti比較側重於流量方面的監控,畫圖也比較美觀,提供各類插件有針對性地進行監控,豪鷲見過有不少機房也採用cacti監控流量;而nagios則比較側重於監控網絡服務,提供接口可自定義腳本插件監控自定義的服務等;豪鷲最開始使用cacti的版本是0.8.7,後來升級到0.8.7g,再後來使用0.8.8a和0.8.8b版本;監控的對象包括:主機資源(CPU、內存、磁盤使用率、網卡流量、web服務、db狀態、tcp狀態以及其餘根據業務自定義監控等),報警均使用139郵箱報警,綁定到手機(不過手機號碼最好是移動的號碼,若是是非移動號碼,是能夠註冊開通139郵箱,但不能綁定到手機)。
24.你對系統安全,有什麼想法?常見***有哪些?DDos***,通常你會怎麼處理。對於,系統自身安全,你有那些看法。
答:
25.你平時用的最多的Linux發行版是什麼?
答:豪鷲用過Solaris系統,Centos5.x/6.x、redhat5.x/6.x、SUSE 11,固然還有其餘系統,如:AIX,HP,FreeBSD,Fedora,Debian,Gentoo,Ubuntu……具體看我的。