1. 程式人生 > >2018年秋招面試常見Linux運維知識點總結

2018年秋招面試常見Linux運維知識點總結

Linux中常見命令:

ping命令:可測試網路是否通暢。ping命令使用的是網路層的ICMP協議,但從命令本身來看是屬於第七層應用層。
traceroute:電腦網路工具,可顯示資料包在IP網路經過的路由器的IP地址。
iostat命令可以檢視磁碟IO狀態。
free命令檢視的是記憶體佔用情況,可以顯示當前系統未使用的和已使用的記憶體數目,還可以顯示被核心使用的記憶體緩衝區。
uptime命令:能夠列印系統總共運行了多長時間和系統的平均負載。uptime可以顯示的資訊依次為:現在時間,
系統已經運行了多長時間,目前有多少個登入使用者,系統在過去1,5,15分鐘內的平均負載。
uptime -v 指定版本資訊
find命令刪除指定大小的檔案:
find /var/mail/ -size +50M -exec rm -fr {} \;
lsof命令:一個列出當前系統的開啟檔案工具,Linux一切皆檔案,每行顯示一個開啟的檔案,若不指定條件預設
將顯示程序的所有檔案。
mount命令:可以檢視磁碟的掛載狀態。
du:統計目錄(或檔案)所佔磁碟空間的大小。
df:用於顯示檔案系統的磁碟使用情況。
vmstat:命令報告關於核心執行緒,虛擬記憶體,磁碟陷阱和CPU活動的統計資訊。
getconf PAGE_SIZE檢視Linux記憶體頁,一般為4KB。

靜態變數和非靜態變數的區別:

靜態變數被所有的物件所共享,在記憶體中只有一個副本,當且僅當類在初次載入會被初始化。
非靜態常量是物件所擁有的,在建立物件的時候被初始化存在多個副本,static在不同例項中地址一樣,存在全域性區。

殭屍程序和孤兒程序:

殭屍程序:一個子程序在其父程序還沒有呼叫wait或waitpid()情況下退出。
孤兒程序:一個父程序在子程序執行時退出,孤兒程序將被init程序所收養。
殭屍程序會導致浪費資源,孤兒程序不會。

TCP的三次握手和四次揮手:

三次握手過程:

四次揮手過程:

在第四次揮手時,為什麼A要先進入TiME-WAIT狀態,等待2MSL時間才進入closed狀態?

為了保證B能收到A的確認應答,若A傳送完應答直接進入CLOSED狀態,如果該應答丟失,B等待超時後會重新發送釋放請求,
但此時A已經關閉,不會有任何響應,因此B永遠無法正常關閉。

TCP和UDP的區別:

TCP--傳輸控制協議,面向連線,可靠的位元組流服務,在客戶端和伺服器交換資料前,必須在雙方建立一個TCP連線才
可以傳輸資料,TCP提供超時重發,丟棄重複資料,檢驗資料,流量控制,保證資料從一端到另外一端。
UDP---使用者資料報協議,面向無連線的,是一個簡單的面向資料報的傳輸協議,UDP不提供可靠性,只是把應用程式
傳遞給IP層的資料報傳送出去,並不可保證是否到達,UDP傳輸不需要建立連線,且沒有超時重發等機制,傳輸速度快。
TCP		 ------   UDP
打電話  ------     發簡訊

TCP和UDP的應用場景:

	若通訊資料完整性需讓位於通訊實時性,則應該選擇TCP協議。(文字傳輸,重要狀態的更新等),反之則使用
	UDP協議(如視訊傳輸,實時通訊等)
	
	TCP協議適用於對效率要求相對低,但對準確性要求相對高的場景下,或者是有一種連線概念的場景下;而UDP
	協議適用於對效率要求相對高,對準確性要求相對低的場景。
	
	TCP一般用於檔案傳輸(FTP HTTP 對資料準確性要求高,速度可以相對慢)遠端登入(TELNET SSH 對資料
	準確性有一定要求,有連線的概念)等等;UDP一般用於即時通訊(QQ聊天 對資料準確性和丟包要求比較低,
	但速度必須快),線上視訊(RTSP 速度一定要快,保證視訊連續,但是偶爾花了一個影象幀,人們還是能接受
	的),網路語音電話(VoIP 語音資料包一般比較小,需要高速傳送,偶爾斷音或串音也沒有問題)等等。
	
	比如,TCP可以用於網路資料庫,分散式高精度計算系統的資料傳輸;UDP可以用於服務系統內部之間的
	資料傳輸,因為資料可能比較多,內部系統區域網內的丟包錯包率又很低,即便丟包,頂多是操作無效,
	這種情況下,UDP經常被使用。

TCP的流量控制:

	如果傳送方傳送資料過快,接收方來不及接受不造成資料的丟失。
	TCP的流量控制利用滑動視窗機制來實現的,接收方在返回的ACK包中會包含自己的接受視窗大小,以控制傳送方的資料傳送。
問題:當ACK報文丟失,出現A等待B確認,B等待A傳送資料的死鎖狀態。
	利用rwnd值實現接收方對傳送方的流量控制。
	當A收到rwnd=0時,啟用持續計時器,時間到了則傳送一個探測報文,詢問B是否很忙或者ACK丟失,B迴應自身接受視窗大小
	,若返回仍為0,則重複步驟。

TCP的擁塞控制:

網路的需求超過自己的工作極限出現擁塞,擁塞控制是為了防止過多的資料注入到網路中,可以使網路中的路由器或者鏈路不過載。
1.慢開始和擁塞避免結合。
慢開始是指傳送資料開始,並不清楚網路中的負荷情況,會先發送一個位元組試探報文,以指數類推。
小於門檻值,使用慢開始演算法加倍。
大於門檻值使用擁塞避免演算法緩慢加1。

快重傳和快恢復演算法:

快重傳和快恢復演算法旨在快速恢復丟失的資料包。快重傳當接受方發現M3丟失,則立即傳送對M2的重複確認,一旦傳送方
接連收到三個M2的重複確認,立即重傳M3,也就是傳送方收到第四個確認時。
快恢復演算法:
當傳送方在cmnd=24連續收到三確認,把慢開始門限值減半為12.
用擁塞避免演算法替換慢開始演算法使擁塞視窗緩慢放大。

SYN攻擊以及解決辦法:

SYN攻擊就是利用TCP協議的缺陷,來導致系統伺服器停止正常的響應。
SYN攻擊原理:
TCP在傳送資料前需要經過三次握手,SYN攻擊的原理就是向伺服器傳送SYN資料包,並偽造源IP地址,在伺服器收到SYN包
時,會將連線加入backlog佇列,並向源IP傳送SYN-ACK資料包並等待ACK,以完成三次連線。由於源IP地址是偽造的不存在的
主機IP,所以伺服器無法收到ACK包並不斷重發,同時backlog佇列會被不斷攻擊的SYN連線佔滿,導致無法處理正常的連線。
SYN攻擊處理:
1.減少ACK包的重發次數。
2.使用SYN cookie技術,返回SYN-ACK包時,不分配專門的資料包,根據SYN包計算出一個cookie值,在伺服器收到SYN-ACK
包時,利用cookie值檢測是否合法,若合法再分配資料包。
3.增加backlog佇列(預設為1024)
4.限制SYN併發數。

後退n幀協議和選擇重傳協議:

後退n幀協議:
傳送視窗的大小為n,接收的大小仍為1,這裡假設n=9,傳送方一次傳送10個幀,前兩個幀已經正確返回,後面的幀出現錯誤,
傳送方要重新發送2-8,接收方也必須丟失之前接受的3-8這幾個幀。
選擇重傳協議:
為了解決後退n幀協議的總要重發該幀之後的所有幀,會導致進一步惡化網路,接收方首先快取所有收到的幀,某個幀出現錯誤時
只重傳該幀,只有當某個序號之後所有幀正確收到後,才一起提交給高層應用,缺點在於需要更多的快取。

nginx為啥叫做反向代理伺服器?:

	反向代理方式是指以代理伺服器來接受客戶端的連線請求,然後將請求轉發到網路上的web伺服器(apache,nginx等),
	並將從web伺服器上得到的結果返回給請求連線的客戶端,此時代理伺服器對外就表現為一個伺服器。而且nginx作為
	反向代理伺服器可以根據使用者請求的內容轉發到不同的後端伺服器。

正向代理:

一個標準的代理緩衝器用於緩衝靜態網頁,當頁面被再次訪問時,瀏覽器將直接從本地代理伺服器獲取請求資料
而不向原web站點請求資料,只需在每一個內部主機指明IP地址和埠號,客戶端上網時,每次交給代理伺服器即可。

BGP和OSPF的區別:

BGP:用來處理不同網路之間的協議。
OSPF:用來處理同一網路內部的鏈路協議。

什麼是IPV4和IPV6?

IPV4指的是地址位數是32位,最多有2的32次方位主機可以連線到Internat。
IPV6採用128位地址空間,幾乎不受限制的提供地址。

redis和memcache的區別:

1.redis中,並不是所有的資料都一直儲存在記憶體中的,這是和memcache的最大區別。
2.redis多方面具備資料庫的特徵,或者說是一個數據庫系統,而memcache只是一個簡單的k/v快取。
3.他們的擴充套件都需要做叢集。
4.redis和memcache都是記憶體資料庫。
5.memcache只支援簡單的key/value的資料結構。無法進行持久化資料不能備份。redis支援多種資料結構,支援持久化操作。

如何交換a和b的數值:

1.不引入第三變數交換:
a=a+b
b=a-b
a=a-b
2.引入第三個變數交換:
c=a
a=b
b=c

Linux開機啟動過程:

1.BIOS加電自檢。
2.讀取MBR主引導記錄
3.執行載入程式grub載入kernel映象初始化。
4.根據/etc/inittab中系統初始化配置執行/etc/rc.sysinit指令碼。
5.根據第三步讀到的執行級別(runlevel)值啟動對應服務。

0:關機
1:單使用者
2:無網路的多使用者
3:命令列模式
4:未用
5:GUI圖形化模式
6:重啟
who -r 顯示當前執行級別以及系統當前時間。
runlevel顯示當前執行級別
init3/init5切換模式

6.執行/etc/rc.d/rc.local
7.生成終端等待使用者登入。

Linux程序的三種狀態:

執行態:佔有CPU,並在CPU上執行。
就緒態:已經具備執行條件,但由於沒有空閒CPU,暫時不能執行。
等待態:因等待某一件事而暫時不能執行,如等待讀盤結果。

OSI四層模型:

應用層
傳輸層
網路互連層
網際層

OSI七層模型以及各層對應服務: 在這裡插入圖片描述

軟連結和硬連結的區別:

硬連結:
檔案有相同的inode及data block。
不能交叉檔案系統進行硬連結的建立。
不可對目錄,只可對檔案建立。
刪除硬連結並不影響其他有相同inode號檔案。
軟連結:
軟連結有自己的檔案屬性和許可權。
可對不存在的檔案和目錄建立軟連結。
軟連結可交叉檔案系統。
軟連結可對檔案/目錄建立。
建立軟連結時,連結計數i_nlink不會增加。
刪除軟連結並不影響被指向的檔案,但若被指向的檔案被刪除,則相關軟連結就變成了死連結,若被指向路徑的檔案被重
新建立,死連結可以恢復。

Linux下的壓縮命令:

1.gzip etc.tar壓縮成gz格式。
  gunzip etc.tar.gz 解壓gz格式的壓縮包
2.bzip2 etc.tar 壓縮成bz2的格式
   bunzip2 etc.tar.bz2 解壓bz2格式壓縮包
3.xz etc.tar 壓縮成xz格式
   unxz etc.tar.xz 解壓xz格式壓縮包
4.zip -r etc.tar.zip etc.tar 壓縮成zip格式
   unzip etc.tar.zip 解壓zip格式壓縮包
5.compress壓縮.z檔案
  uncompress解壓.z檔案

Linux可以查閱全部檔案的三個命令:

cat,more,less
more命令:可以讓螢幕在顯示滿一個螢幕時,按空格鍵可以繼續顯示下一個畫面或按Q鍵停止。
less命令:可以分頁顯示檔案。
cat命令:一次顯示整個檔案。

定時任務:

* * * * * command表示格式
分鐘 小時 天 月 周 命令

交換分割槽:

在記憶體小於2G的情況下,交換分割槽為記憶體的2倍,超過2倍的話,交換分割槽為實體記憶體的兩倍。

運維的工作用途:

1.保障系統的正常用途。
2.保障資料的安全可靠。
3.負責服務的穩定性,確保服務可以7*24小時不間斷的為使用者提供服務。
4.確保系統架構的優化來節約成本。
5.確保自動化部署。

man的級別:

1.檢視命令的幫助
2.檢視可被核心呼叫函式的幫助。
3.檢視函式和函式庫的幫助。
4.檢視特殊檔案的幫助。
5.檢視配置檔案的幫助。
6.檢視遊戲的幫助。
7.檢視其它雜項的幫助。
8.檢視系統管理員可用命令的幫助。

DNS快取記憶體服務:

DNS解析過程:
1.本地客戶機提出域名解析請求,查詢本地HOST檔案後將該請求傳送給本地域名伺服器。
2.當本地的域名伺服器收到請求後,就先查詢本地的快取,如果有該記錄項
伺服器返回查詢結果。
3.如果本地DNS快取沒有該記錄,則本地域名伺服器將請求發給根域名伺服器,然後根域名伺服器
再返回給本地域名伺服器一個所查詢的主域名伺服器地址。
4.本地域名伺服器再向上一步返回的域名伺服器傳送請求,然後接受請求的伺服器查詢自己的快取。
5.重複第4步。
6.本地域名伺服器把返回的結果儲存到快取以備下一次使用,將結果返回客戶機。

DHCP:動態主機配置協議

作用於OSI的應用層,可以從指定的DHCP伺服器獲取配置資訊的協議(IP地址,子網掩碼,dns,閘道器)
DHCP的運作方式:(53埠)
	客戶端傳播廣播包給整個物理網段內的所有主機,如區域網內有DHCP伺服器時,才會響應客戶端的IP引數要求
所以DHCP伺服器與客戶端應在同一個物理網段內。

常見的HTTP狀態碼:

200-ok     伺服器成功返回網頁
301 			請求的網頁已經永久跳轉到新位置
403-Forbidden  		禁止訪問,伺服器拒絕請求
404- Not found   		伺服器找不到請求的頁面
500以及500之後的都是內部伺服器錯誤
可以用 curl -I www.baidu.com 檢視狀態碼

HTTP長連線和短連線:

短連線:客戶端和伺服器每進行一次HTTP操作,就建立一次連線,任務結束中斷連線。
長連線:用以保持連線特性,當一個網頁開啟完成,客戶端和伺服器的連線不會關閉,
再次訪問時會繼續使用已建立的連線。

HTTP協議中Get和Post的區別:

Get用於獲取查詢/獲取資訊,Post方法用於資源的更新。
1.get提交的資料放在url之後,以?分割url和傳輸資料,post方法把提交的資料放在HTTP包的Body中。
2.get提交的資料大小有限制,post方法提交的資料無限制。
3.get方法涉及安全問題。

HTTPS和HTTP的區別:

HTTPS以安全為目標HTTP通道,HTTP是超文字傳輸協議,無狀態,資訊明文傳輸。HTTPS是HTTP+SSL
協議構建的可進行加密傳輸,身份認證的網路協議,比HTTP協議安全