1、運維工作中自己做的遇到的、感覺有深度、對自己提升最大的項目有哪些?
這個問題就是考察自己在工作中遇到的一些問題的總結,說的明白一點就是工作經驗,有一點就是要表現出自己的優勢
2、參數在配置的時候,如何做合理配置?
這里考查的是我的tomcat服務器的內存溢出問題中的參數是根據什么來配置的,這里我們的永久內存是根據物理內存來設置的,默認是物理內存的1/64,設置時不能超過物理內存。
3、設置參數超過了物理內存后有什么后果?
當應用程序需要的內存超出堆的最大值時服務器就會提示內存溢出,並且導致應用服務崩潰。因此一般建議堆的最大值設置為可用內存的最大值的80%
4、一個進程啟動后,它的操作內存空間是多大的?(這個問題沒遇到過,找的答案)
LINUX下的進程可尋址空間同樣為4G(在32位機器上),共享內存的機制就是兩個進程(也可以更多)的共享部分的邏輯地址所指向的物理頁面相同,也就是說共享一段內存時,唯一的開銷就是頁表,當然,它的虛擬邏輯地址是要占位的,也就是你所說的要記在這段4G的范圍內
5、進程和線程的區別
進程是操作系統資源分配的基本單位,而線程是任務調度和執行的基本單位
在操作系統中能同時運行多個進程(程序);而在同一個進程(程序)中有多個線程同時執行(通過CPU調度,在每個時間片中只有一個線程執行)
6、僵屍進程和孤兒進程
子進程先於父進程退出后,子進程的PCB需要其父進程釋放,但是父進程並沒有釋放子進程的PCB,這樣的子進程就稱為僵屍進程,僵屍進程實際上是一個已經死掉的進程。將它掛在后台執行,可以看到結果,用ps可以看到子進程后有一個<defunct> ,defunct是已死的,僵屍的意思,可以看出這時的子進程已經是一個僵屍進程了。因為子進程已經結束,而其父進程並未釋放其PCB,所以產生了這個僵屍進程。
一個父進程退出,而它的一個或多個子進程還在運行,那么那些子進程將成為孤兒進程。孤兒進程將被init進程(進程號為1)所收養,並由init進程對它們完成狀態收集工作。子進程死亡需要父進程來處理,那么意味着正常的進程應該是子進程先於父進程死亡。當父進程先於子進程死亡時,子進程死亡時沒父進程處理,這個死亡的子進程就是孤兒進程。
7、進程間的通信方式 (這個問題需要深究)
管道、消息隊列、共享內存、信號量、socket、信號、文件鎖
進程間通信(IPC,InterProcess Communication)是指在不同進程之間傳播或交換信息。
8、查找目錄下五天前的文件
find . -name "*.sh" -mtime -5
9、查看進程信息
ps -l 列出與本次登錄有關的進程信息;
ps -aux 查詢內存中進程信息;
ps -aux | grep *** 查詢***進程的詳細信息;
top 查看內存中進程的動態信息;
10、查看CPU使用率
top命令可以看到總體的系統運行狀態和cpu的使用率
sar 例如每1秒采集一次CPU使用率,共采集5次。sar -u 1 5
如果需要查看某顆cpu的使用可以用-P參數。例如指定顯示0號cpu 的使用情況。 sar -P 0 -u 1 5
mpstat 每1秒收集一次,共5次。mpstat 1 5
11、top命令中load average的含義(這個問題需要深究)
top命令中load average顯示的是最近1分鍾、5分鍾和15分鍾的系統平均負載
12、CPU的內核態和用戶態 (這個問題需要深究)
內核態:
1.系統中既有操作系統的程序,也有普通用戶程序。為了安全性和穩定性,操作系統的程序不能隨便訪問,這就是內核態。即需要執行操作系統的程序就必須轉換到內核態才能執行
2. 內核態可以使用計算機所有的硬件資源
用戶態:不能直接使用系統資源,也不能改變CPU的工作狀態,並且只能訪問這個用戶程序自己的存儲空間
13、查看磁盤使用率(某一個目錄)
du -sh 目錄
14、端口被占用怎么解決
輸入你想要查的正在占用的端口號,netstat -ano|findstr 8080 (Windows命令),此時會顯示端口8080對應的tcp號,終止了8080端口的運行進程,就可以運行了。
15、軟硬鏈接區別
軟鏈接可以理解成快捷方式。它和windows下的快捷方式的作用是一樣的。
硬鏈接等於cp -p 加 同步更新。
16、刪除原文件后軟硬鏈接有什么區別
硬鏈接沒有絲毫地影響,因為它 inode 所指向的區塊由於有一個硬鏈接在指向它,所以這個區塊仍然有效,並且可以訪問到。
然而軟鏈接的 inode 所指向的內容實際上是保存了一個絕對路徑,當用戶訪問這個文件時,系統會自動將其替換成其所指的文件路徑,然而這個文件已經被刪除了,所以自然就會顯示無法找到該文件了。
17、shell中單引號、雙引號、反引號的區別
單引號:不管單引號里面有什么都原樣輸出,無視一切變量,所見即所得
雙引號:內容中有變量、特殊轉義符等,會先把變量、轉義字符解析出結果,然后再輸出最終內容。
反引號:用於命令引用,命令的執行。
18、DNS解析過程
遞歸查詢
- 瀏覽器查詢緩存,是否有百度的ip,如果有結束
- hosts文件中是否有百度的ip地址,如果有結束
- 如果本地DNS有百度的ip地址,如果有,本地DNS將其返回給請求主機,然后結束
- 根服務器根據
com
后綴,將請求轉發給頂級域名服務器 - 頂級域名服務器查詢自己的權威DNS服務器
- 權威DNS域名服務器查詢到百度的IP,將結果返回給頂級,頂級返回給根,根返回給本地,本地返回給請求主機,結束。
迭代查詢
- 瀏覽器查詢緩存,是否有百度的ip,如果有結束
- hosts文件中是否有百度的ip地址,如果有結束
- 如果本地DNS有百度的ip地址,如果有,本地DNS將其返回給請求主機,然后結束
(前三步不變) - 根服務器根據
com
后綴,將頂級服務器IP告訴給本地服務器 - 本地服務器訪問頂級DNS,頂級DNS將權威DNS返回給本地
- 本地服務器訪問權威DNS,權威DNS將百度IP返回給本地
- 本地將百度IP返回給請求主機
1) TCP提供面向連接的傳輸,通信前要先建立連接(三次握手機制); UDP提供無連接的傳輸,通信前不需要建立連接。
2) TCP提供可靠的傳輸(有序,無差錯,不丟失,不重復); UDP提供不可靠的傳輸。
3) TCP面向字節流的傳輸,因此它能將信息分割成組,並在接收端將其重組; UDP是面向數據報的傳輸,沒有分組開銷。
4) TCP提供擁塞控制和流量控制機制; UDP不提供擁塞控制和流量控制機制。
20、為什么是四次揮手?
由於TCP連接是全雙工的,因此每個方向都必須單獨進行關閉。
TCP的連接的拆除需要發送四個包,因此稱為四次揮手(four-way handshake)。客戶端或服務器均可主動發起揮手動作,在socket編程中,任何一方執行close()操作即可產生揮手操作。
(1)客戶端A發送一個FIN,用來關閉客戶A到服務器B的數據傳送。
(2)服務器B收到這個FIN,它發回一個ACK,確認序號為收到的序號加1。和SYN一樣,一個FIN將占用一個序號。
(3)服務器B關閉與客戶端A的連接,發送一個FIN給客戶端A。
(4)客戶端A發回ACK報文確認,並將確認序號設置為收到序號加1。
21、time_waite狀態
等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認;
22、OSI七層及所對應的協議
應用層 特定應用對接收數據的處理 HTTP、FTP、SMTP
表示層 設備數據格式與網絡標准數據格式轉換 LPP、GIF、JPEG
會話層 通信管理,建立和斷開通信連接 RPC、SSL、TLS
傳輸層 管理兩個網絡終端之間的數據傳輸 TCP、UDP
網絡層 網絡地址管理和路由選擇 IP/IPv6、ICMP
數據鏈路層 互聯設備之間傳送和識別數據幀 ARP、PARP
物理層 比特流與電子信號之間的轉換 IEEE 802.3/802.2
23、常見的負載均衡策略
輪詢、加權輪詢、hash算法、隨機random、最小連接數、加權最小連接數
24、http狀態碼
1開頭:信息狀態碼
2開頭:成功狀態碼
3開頭:重定向狀態碼
4開頭:客戶端錯誤狀態碼
5開頭:服務端錯誤狀態碼
25、shell截取日志文件中的IP,並統計,截取出次數最多的
當前WEB服務器中聯接次數最多的ip地址
netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -nr