1、簡述TCP三次握手四次揮手過程及各過程中客戶端和伺服器端的狀態。 1 2 3 4 5 6 7 8 9 10 11 12 13 #三次握手 客戶端向伺服器端發送SYN包,客戶端進入SYN_SEND狀態 伺服器端收到客戶端發送的包返回ACK+SYN包,伺服器端進入SYN_RECV狀態 客戶端收到服務 ...
1、簡述TCP三次握手四次揮手過程及各過程中客戶端和伺服器端的狀態。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#三次握手
客戶端向伺服器端發送SYN包,客戶端進入SYN_SEND狀態
伺服器端收到客戶端發送的包返回ACK+SYN包,伺服器端進入SYN_RECV狀態
客戶端收到伺服器端返回的包再發回ACK包,客戶端進入ESTABLISHED狀態,伺服器端收到包也進入ESTABLISHED狀態
客戶端狀態:SYN_SENDE STABLISHED
伺服器端狀態:SYN_RCVE ESTABLISHED
#四次揮手
客戶端發送FIN包詢問伺服器端是否能斷開,客戶端進入FIN_WAIT_1狀態
伺服器端收到客戶端發送的包並返回ACK包,伺服器端進入CLOSE_WAIT狀態
伺服器端準備好斷開後,發送FIN包給客戶端,伺服器端進入LAST_ACK狀態
客戶端收到伺服器端發送的包後返回ACK包,客戶端進入TIME_WAIT狀態,伺服器端收到包後進入CLOSED狀態
客戶端狀態:FIN_WAIT_1 FIN_WAIT_2 TIME_WAIT
伺服器端狀態:CLOSE_WAIT LAST_ACKC LOSED
|
2、說說進程和線程的區別
1 2 |
進程是併發執行的程式在執行過程中分配和管理資源的基本單位。
線程是進程的一部分,線程的改變只代表了 CPU 執行過程的改變,而沒有發生進程所擁有的資源變化。
|
3、查詢file.txt以abc結尾的行
1 |
grep "abc$" file .txt
|
4、刪除file.txt文件中的空行
1 |
sed -i '/^$/d' file .txt
|
5、列印file.txt文件中的第10行
1 2 3 |
sed -n '10p' file .txt
head -10 file .txt | tail -1
|
6、對MySQL資料庫test進行備份和恢復
備份:
1 |
mysqldump -uroot -pPassword -hHostname test > /root/test .sql
|
恢復:
1 |
mysql -uroot -pPassword -hHostname < /root/test .sql
|
7、用netstat統計系統當前tcp連接的各種狀態的連接數。
1 |
netstat -nat| awk '{print $6}' | sort | uniq -c
|
8、linux下如何將GBK編碼格式的test_gbk.txt文件轉換成UTF-8編碼格式,轉化後的文件名為 test_utf8.txt
1 |
iconv -f GBK -t UTF-8 test_gbk.txt -o test_utf8.txt
|
9、說說你用過哪些監控軟體,並簡述其原理及適用場景
1 2 3 4 5 |
#zabbix
agent方式監控:在被監控端安裝agent程式,通過zabbix自己的協議主動或被動發送數據給server端或代理的proxy端,
適用於伺服器、工作站的監控,不適用於交換機、路由器、防火牆的監控。
SNMP方式監控:通過SNMP協議進行監控,需要開起並配置SNMP服務,適用於網路設備(交換機、路由器、防火牆)的監控,
通信協議為UDP,所以不適用於伺服器、工作站的監控。
|
10、寫出查看linux系統性能的命令,如cpu、記憶體、流量、io等
top,free,iftop,iostat
11、說說nginx的upstream支持的分配策略,並簡述其原理
1 2 3 4 5 |
輪詢:預設的方式,按時間順序依次分配
weight:根據伺服器權重進行輪詢分配
ip_hash:按ip的 hash 值進行分配,可以解決session保持
url_hash:按訪問url的 hash 結果來分配請求,使每個url定向到同一個後端伺服器,後端伺服器為緩存時比較有效
fair:按伺服器響應時長進行分配
|
12、crontab定時:在11月份內,每天的早上6點到12點中,每隔2小時執行一次/usr/bin/httpd.sh 怎麼實現
1 |
0 6-12 /2 * 11 * /usr/bin/httpd .sh
|
13、iptables禁止 ip 10.10.10.1 訪問本地80埠
1 |
iptables -t filter -I INPUT -p tcp -s 10.10.10.1 --dport 80 -j DROP
|
14、找出在文件a中但不在文件b中的內容,用命令後編寫腳本實現
1 2 |
#!/bin/bash
diff /root/a /root/b | grep "<" | awk '$1=" "'
|
15、編寫shell迴圈創建100個用戶,用戶名格式user_[0~99]
1 2 3 4 5 |
#!/bin/bash
for i in {1..100}; do
useradd user_$i
done
echo "ok"
|