1、簡述TCP三次握手四次揮手過程及各過程中客戶端和服務器端的狀態。
TCP三路握手,作用為完成三次握手,主機A與主機B開始傳送數據。
第一次握手:客戶端A(狀態為SYN_SEND)發送位碼為syn=1,隨機產生seq number=1234567的數據包到服務器,服務器B(狀態為LISTEN)由SYN=1知道,客戶端A要求建立聯機;
第二次握手:服務器B(狀態為SYN_RECV)收到請求后要確認聯機信息,向客戶A發送ack number=(客戶端A的seq+1),syn=1,ack=1,隨機產生seq=7654321的包
第三次握手:客戶端A(狀態為ESTABLISHED)收到后檢查ack number是否正確,即第一次發送的seq number+1,以及位碼ack是否為1,若正確,客戶端A會再發送ack number=(服務器B的seq+1),ack=1,服務器B(狀態為ESTABLISHED)收到后確認seq值與ack=1則連接建立成功。
TCP四路揮手,是因為TCP連接是全雙工的,因此每個方向都必須單獨進行關閉。
(1)客戶端A(狀態為FIN_WAIT)發送一個FIN,用來關閉客戶A到服務器B(狀態為)的數據傳送。
(2)服務器B(狀態為CLOSE_WAIT)收到這個FIN,它發回一個ACK,確認序號為收到的序號加1。
(3)服務器B(狀態為LAST_ACK)關閉與客戶端A的連接,發送一個FIN給客戶端A。
(4)客戶端A(狀態為TIME_WAIT)發回ACK報文確認,并將確認序號設置為收到序號加1。
2、說說進程和線程的區別
進程是程序執行時的一個實例,即它是程序已經執行到課中程度的數據結構的匯集。從內核的觀點看,進程的目的就是擔當分配系統資源(CPU時間、內存等)的基本單位。
線程是進程的一個執行流,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。一個進程由幾個線程組成,線程與同屬一個進程的其他的線程共享進程所擁有的全部資源。
他們之間的區別是:進程有獨立的地址空間,線程沒有單獨的地址空間。
3、查詢file.txt以abc結尾的行
Grep "abc$" file.txt
4、刪除file.txt文件中的空行
Cat file.txt | tr -s '\n'
5、打印file.txt文件中的第10行
tail -n +10 file.txt > files.txt
mv files.txt file.txt
6、對MySQL數據庫test進行備份和恢復
備份:mysqldump –u USERNAME –p test > test_db.test.sql
恢復:mysql -u USERNAME -p test < test_db.test.sql
7、用netstat統計系統當前tcp連接的各種狀態的連接數。
netstat -nat|wc –l
8、linux下如何將GBK編碼格式的test_gbk.txt文件轉換成UTF-8編碼格式,轉化后的文件名為 test_utf8.txt
iconv -f gbk -t utf-8 test_gbk.txt -o test_utf8.txt
9、說說你用過哪些監控軟件,并簡述其原理及適用場景
A、OpenTSDB 用HBase存儲所有的時序(無須采樣)來構建一個分布式、可伸縮的時間序列數據庫,它支持秒級數據采集所有metrics,支持永久存儲,可以做容量規劃,并很容易的接入到現有的報警系統里。OpenTSDB可以從大規模的集群(包括集群中的網絡設備、操作系統、應用程序)中獲取相應的metrics并進行存儲、索引以及服務,從而使得這些數據更容易讓人理解,如web化、圖形化等。適用于大型服務器分布式集群。
B、InfluxDB 是一個開源分布式時序、事件和指標數據庫。使用 Go 語言編寫,無需外部依賴。適用于大型服務器分布式集群。
C、Graphite 是一個用于采集網站實時信息并進行統計的開源項目,可用于采集多種網站服務運行狀態信息。Graphite服務平均每分鐘有4800次更新操作。實踐已經證實要監測網站發發生什么是非常有用的,它的簡單文本協議和繪圖功能可以方便地即插即 用的方式用于任何需要監控的系統上。適用于特大型服務器分布式集群。
10、寫出查看linux系統性能的命令,如cpu、內存、流量、io等
cpu:top、htop
內存:free
流量:iftop、nethogs
io:iostat
硬盤空間:df -hl
11、說說nginx的upstream支持的分配策略,并簡述其原理
Nginx的upstream支持5種分配方式:
1、輪詢 輪詢是upstream的默認分配方式,即每個請求按照時間順序輪流分配到不同的后端服務器,如果某個后端服務器down掉后,能自動剔除。
2、weight 輪詢的加強版,即可以指定輪詢比率,weight和訪問幾率成正比,主要應用于后端服務器異質的場景下。
3、ip_hash 每個請求按照訪問ip(即Nginx的前置服務器或者客戶端IP)的hash結果分配,這樣每個訪客會固定訪問一個后端服務器,可以解決session一致問題。
4、 url_hash 與ip_hash類似,但是按照訪問url的hash結果來分配請求,使得每個url定向到同一個后端服務器,主要應用于后端服務器為緩存時的場景下。
5、fair fair顧名思義,公平地按照后端服務器的響應時間(rt)來分配請求,響應時間短即rt小的后端服務器優先分配請求。
12、crontab定時:在11月份內,每天的早上6點到12點中,每隔2小時執行一次/usr/bin/httpd.sh 怎么實現。
* 6-12/2 * 11 * /usr/bin/httpd.sh
13、iptables禁止 ip 10.10.10.1 訪問本地80端口
iptables -I INPUT -s 10.10.10.1/32 –dport 80 -j DROP
14、找出在文件a中但不在文件b中的內容,用命令后編寫腳本實現
15、編寫shell循環創建100個用戶,用戶名格式user_[0~99]
for id in {0..99}; do useradd user_$id; done
原創文章,作者:xue2016,如若轉載,請注明出處:http://www.www58058.com/18251
都說題目很重要!今天領略了