1、簡述TCP三次握手四次揮手過程及各過程中客戶端和服務器端的狀態。
三次握手:
a(syn-send) -> send syn -> b(listen)
a(syn-send) <- receive syn_ack <- b(sync_recv)
a(estabilish) -> send ack -> b(estabilish)
四次揮手:
a(fin_wait1) -> send fin -> b(close-wait)
a(fin_wait2)<- receive ack <- b(close-wait)
a(fin_wait2) <- receive fin <- b(last-ack)
a(time_wait)-> send ack -> b(closed)
2、說說進程和線程的區別
進程是程序運行在內存中的表現。進程都擁有獨立地址空間,不同進程之間的資源訪問只能通過IPC機制;線程是進程內部的不同執行路徑,多個線程除了棧是獨立的,其余都共享著進程的內部資源,因此線程占用著更小的內存;進程切換需要保存和切換整個內存空間開銷較大,而線程切換僅需要保存和切換線程棧的上下文即可
3、查詢file.txt以abc結尾的行
grep 'abc$' file.txt
4、刪除file.txt文件中的空行
sed -i '/^[[:space:]]*$/d' file.txt
5、打印file.txt文件中的第10行
sed -n '10p' file.txt
6、對MySQL數據庫test進行備份和恢復
backup:
mysqldump –single-transation -uUSERNAME -p test > db.test.sql
restore:
mysql -uUSERNAME -p test < db.test.sql
7、用netstat統計系統當前tcp連接的各種狀態的連接數。
netstat -tn | awk '$1 ~ /^tcp/ {a[$NF]++;} END {for (state in a) { print state,a[state]}}'
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、說說你用過哪些監控軟件,并簡述其原理及適用場景
zabbix:
使用master、agent模式,agent負責收集被監控節點的數據,根據其設置主動或被動模式,分別由master向agent獲取數據或agent上報數據給master,最終數據由master寫入數據庫保存,并通過web展示接口從數據庫中獲取數據、繪制圖形并展現到用戶
應用場景:
目前主流的統一監控,能支持分布式監控、自定義監控項及告警、監控數據的圖表展現,基本上滿足日常監控需要的各種場景
10、寫出查看linux系統性能的命令,如cpu、內存、流量、io等
cpu:
top、htop
內存:
free
流量:
iftop、nethogs
io:
iostat
11、說說nginx的upstream支持的分配策略,并簡述其原理
rr/wrr:
使用輪詢或加權輪詢后端server實現負載均衡
lc/wlc:
基于后端server的最少連接數來選擇要轉發至哪個后端server
一致性會話:
基于客戶端source ip的hash值來選擇特定的后端server,相同sip的請求會轉發到同一后端server
基于cookie,在client端植入cookie,每次接收client請求,通過此cookie判斷要轉發到哪臺后端server,因此,同一client的請求會轉發到相同的后端server
12、crontab定時:在11月份內,每天的早上6點到12點中,每隔2小時執行一次/usr/bin/httpd.sh 怎么實現
crontab -e
* 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中的內容,用命令后編寫腳本實現
command:
grep -v -f b.txt a.txt
script:
#!/bin/bash
while read aline; do
bingo=0
while read bline; do
if [[ "$aline" = "$bline" ]]; then
bingo=1
break
fi
done < b.txt
[ $bingo -eq 0 ] && echo $aline
done < a.txt
15、編寫shell循環創建100個用戶,用戶名格式user_[0~99]
for id in {0..99}; do useradd user_$id; done
原創文章,作者:gateray,如若轉載,請注明出處:http://www.www58058.com/18164