1、簡述TCP三次握手四次揮手過程及各過程中客戶端和服務器端的狀態。
#三次握手 客戶端向服務器端發送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、說說進程和線程的區別
進程是并發執行的程序在執行過程中分配和管理資源的基本單位。 線程是進程的一部分,線程的改變只代表了 CPU 執行過程的改變,而沒有發生進程所擁有的資源變化。
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 head -10 file.txt | tail -1
6、對MySQL數據庫test進行備份和恢復
備份:
mysqldump -uroot -pPassword -hHostname test >/root/test.sql
恢復:
mysql -uroot -pPassword -hHostname </root/test.sql
7、用netstat統計系統當前tcp連接的各種狀態的連接數。
netstat -nat| awk '{print $6}'| sort | uniq -c
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 agent方式監控:在被監控端安裝agent程序,通過zabbix自己的協議主動或被動發送數據給server端或代理的proxy端, 適用于服務器、工作站的監控,不適用于交換機、路由器、防火墻的監控。 SNMP方式監控:通過SNMP協議進行監控,需要開起并配置SNMP服務,適用于網絡設備(交換機、路由器、防火墻)的監控, 通信協議為UDP,所以不適用于服務器、工作站的監控。
10、寫出查看linux系統性能的命令,如cpu、內存、流量、io等
top,free,iftop,iostat
11、說說nginx的upstream支持的分配策略,并簡述其原理
輪詢:默認的方式,按時間順序依次分配 weight:根據服務器權重進行輪詢分配 ip_hash:按ip的hash值進行分配,可以解決session保持 url_hash:按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,后端服務器為緩存時比較有效 fair:按服務器響應時長進行分配
12、crontab定時:在11月份內,每天的早上6點到12點中,每隔2小時執行一次/usr/bin/httpd.sh 怎么實現
0 6-12/2 * 11 * /usr/bin/httpd.sh
13、iptables禁止 ip 10.10.10.1 訪問本地80端口
iptables -t filter -I INPUT -p tcp -s 10.10.10.1 --dport 80 -j DROP
14、找出在文件a中但不在文件b中的內容,用命令后編寫腳本實現
#!/bin/bash diff /root/a /root/b | grep "<" | awk '$1=" "'
15、編寫shell循環創建100個用戶,用戶名格式user_[0~99]
#!/bin/bash for i in {1..100};do useradd user_$i done echo "ok"
原創文章,作者:N17_信風,如若轉載,請注明出處:http://www.www58058.com/18051