1、簡述TCP三次握手四次揮手過程及各過程中客戶端和服務器端的狀態。
握手:
client 發送請求SYN到 server; 狀態:server;初始狀態為LISTEN,client 發送SYN后變為SYN_SENT
server 發送ACK回應,并發送SYN請求到 client;狀態:服務器收到SYN后,變為SYN_RCVD,發送ACK+SYN后,變為ESTAHLISHED
client 發送ACK到服務端,連接建立。 客戶端變為ESTABLISHED
揮手:
client 發送斷開請求FIN到 server;狀態:客戶端發送FIN后,變為FIN_WAIT_1
server 發送ACK回應 client;狀態:server收到FIN后,變為CLOSE_WAIT,client收到ACK后,變為FIN_WAIT_2
server 發送FIN到 client;狀態:server發送FIN后,變為LAST_ACK狀態,client收到FIN后,變為TIME_WAIT
client 發送ACK到 server,連接斷開;狀態:server收到ACK后,變為CLOSED。
2、說說進程和線程的區別
進程是程序在執行過程中的基本單位。每個進程至少包含一個線程,線程之間可以共享變量,進程之間需要使用queue等機制實現變量的共享。
3、查詢file.txt以abc結尾的行
grep 'abc$' file.txt
4、刪除file.txt文件中的空行
sed -i ‘/^$/d’ file.txt
5、打印file.txt文件中的第10行
sed -n ‘10p’ file.txt
6、對MySQL數據庫test進行備份和恢復
備份:mysqldump -uroot -p test > ~/test.sql
恢復:mysql -uroot -p < ~/test.sql
7、用netstat統計系統當前tcp連接的各種狀態的連接數。
netstat -an | awk '/^tcp/ {print $NF}' |uniq -c
8、linux下如何將GBK編碼格式的test_gbk.txt文件轉換成UTF-8編碼格式,轉化后的文件名為 test_utf8.txt
#!/bin/env python
f_gbk = open(‘test_gbk.txt’, ‘r’)
f_utf = open(‘test_utf8.txt’,’a’)
for line in f_gbk:
line = line.decode(‘gbk’)
f_utf.write(line.encode(‘utf-8’))
f_gbk.close()
f_utf.close()
9、說說你用過哪些監控軟件,并簡述其原理及適用場景
zabbix,原理:agentd搜集被監控服務器的信息,傳給服務端,服務端寫入數據庫。
再通過php的網頁將數據展現出來
適用場景:監控支持snmp的設備,監控linux主機,監控mysql redis mangodb的狀態
10、寫出查看linux系統性能的命令,如cpu、內存、流量、io等
ps top free iostat vmstat netstat iptraf
終極解決方案 阿里巴巴開源的tsar
11、說說nginx的upstream支持的分配策略,并簡述其原理
輪詢:請求按順序分配到后端服務器
weight:與輪詢相同,對weight增加權重
ip_hash: 根據ip的hash結果分配到固定的后端服務器
url_hash: 與ip_hash相同,不過按照url的hash結果分配到固定的后端服務器
12、crontab定時:在11月份內,每天的早上6點到12點中,每隔2小時執行一次/usr/bin/httpd.sh 怎么實現
echo '* 6-12/2 * 11 * root /usr/bin/httpd.sh' >> /etc/crontab
13、iptables禁止 ip 10.10.10.1 訪問本地80端口
iptables -A INPUT -s 10.10.10.1 -p tcp —dport 80 -j DROP
14、找出在文件a中但不在文件b中的內容,用命令后編寫腳本實現
#!/bin/bash
diff a b | grep '>' | sed -r 's/>(.*)/\1/g'
15、編寫shell循環創建100個用戶,用戶名格式user_[0~99]
#!/bin/bash
for i in `seq 0 99`; do
useradd "user_$i"
done
原創文章,作者:aaron,如若轉載,請注明出處:http://www.www58058.com/18969