1、請使用Linux系統命令統計出establish狀態鏈接數有多少?
netstat -an |grep ESTABLISHED |wc -l
-a (all)顯示所有選項,默認不顯示LISTEN相關
-t (tcp)僅顯示tcp相關選項
-u (udp)僅顯示udp相關選項
-n 拒絕顯示別名,能顯示數字的全部轉化成數字。
-l 僅列出有在 Listen (監聽) 的服務狀態
-p 顯示建立相關鏈接的程序名
-r 顯示路由信息,路由表
-e 顯示擴展信息,例如uid等
-s 按各個協議進行統計
-c 每隔一個固定時間,執行該netstat命令。
提示:LISTEN和LISTENING的狀態只有用-a或者-l才能看到
2、查詢file1里面空行所在行號?
grep -n "^$" file1
3、查詢file1以abc結尾的行?
grep "abc$" file1
4、Crontab在11月份內,每天的早上6點到12點中,每隔2小時執行一次/use/bin/httpd.sh
怎么實現?
0 6-12/2 * 11 * /usr/bin/httpd.sh
5、寫一個腳本查找最后創建時間是3天前,后綴是*log的文件並刪除。
#/bin/bash
# filename: del_log.sh
find / -name "*.log" -mtime 3 | xargs rm -rf
#/bin/bash
# filename: del_log.sh
find / -name "*.log" -mtime 3 -exec rm -rf {} \;
#/bin/bash
# filename: del_log.sh
find / -name "*.log" -mtime 3 -ok rm -rf {} \;
6、用shell在/usr/local下建立20個子目錄xunlei1-xunlei20,再在這個子目錄下分別建255個子目錄dir1-dir255,再在255個子目錄下創建10000個文件xunlei1.html-xunlei10000.html。
mkdir -p /usr/loca/xunlie{1..20}/dir{1..255}/
touch /usr/loca/xunlie{1..20}/dir{1..255}/xunlei{1..10000}.html
7、通過Nginx訪問日志access.log統計IP和每個地址訪問的次數,按訪問量列出前10名,
日格式樣例如下 192.168.1.247 - -[02/Jul/2010:23:44:59 +0800] -GET /HTTP/1.1” 200 19
cat access_log | awk ‘{print $1}’ | uniq -c|sort -rn|head -10
企業案例
處理一下文件內容,將域名取出並根據域名進行計數排序處理(百度和sohu面試題)
1 2 3 4 5 6 7 |
[root@web01 ~]# cat access.log http://www.etiantian.org/index.html http://www.etiantian.org/1.html http://post.etiantian.org/index.html http://mp3.etiantian.org/index.html http://www.etiantian.org/3.html http://post.etiantian.org/2.html |
解答:
分析:此類問題是運維工作中最常見的問題。可以演變成分析日志,查看TCP各個狀態連接數,查看單IP連接數排名等等。
1 2 3 4 |
[root@web01 ~]# awk -F ‘[/]+‘ ‘{print $2}‘ access.log|sort|uniq -c|sort -rn -k1 3 www.etiantian.org 2 post.etiantian.org 1 mp3.etiantian.org |
sort(選項)(參數)
選項
-b:忽略每行前始出的空格字符;
-c:檢查文件是否已經按照順序排序;
-d:排序時,處理英文字母、數字及空格字符外,忽略其他的字符;
-f:排序時,將小寫字母視為大寫字母;
-i:排序時,除了040至176之間的ASCII字符外,忽略其他的字符;
-m:將幾個排序號的文件進行合並;
-M:將前面3個字母依照月份的縮寫進行排序;
-n:依照數值的大小排序;
-o<輸出文件>:將排序后的結果存入制定的文件;
-r:以相反的順序來排序;
-t<分隔字符>:指定排序時所用的欄位分隔字符;
+<起始欄位>-<結束欄位>:以指定的欄位來排序,范圍由起始欄位到結束欄位的前一欄位。
8、殺死以A開頭的所有進程。
https://zhidao.baidu.com/question/39629953.html
ps -ef |grep A|grep -v grep|cut -c 9-15 |xargs kill-9
在Linux平台上后台運行4個vim進程,使用如下命令即可同時結束掉4個vim進程
ps -efww|grep vim |grep -v grep|cut -c 9-15|xargs kill -9
說明:管道符“|”用來隔開兩個命令,管道符左邊命令的輸出會作為管道符右邊命令的輸入。
“ps -efww”是查看所有進程的命令。這時檢索出的進程將作為下一條命令“grep“的輸入,注意要結束其它程序時,請將上面命令中的vim替換成其它程序名。
“grep -v grep”是在列出的進程中去除含有關鍵字“grep”的進程。
“cut -c 9-15”是截取輸入行的第9個字符到第15個字符,而這正好是進程號PID。
“xargs kill -9”中的xargs命令是用來把前面命令的輸出結果(PID)作為“kill -9”命令的參數,並執行該命令。
“kill -9”會強行殺掉指定進程,這樣就成功清除了同名進程。
9、如何查看占用端口8080的進程。
方法1 使用lsof命令
lsof(list open files)是一個列出當前系統打開文件的工具。在linux環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件。
使用IPv4協議的局域網:
執行命令: lsof -Pnl +M -i4|grep 8080
輸出結果: java 1419 1401 10u IPv4 6793357 TCP *:8080 (LISTEN)
方法2 先使用 netstat命令,再用 ps命令
執行命令: netstat -anp|grep 8080
輸出結果: tcp 0 0 :::8080 :::* LISTEN 12006/java
執行命令: ps -ef | grep 12006
輸出結果: root 12886 12851 0 Dec09 ? 00:01:14 /home/bjca/bea/jdk160_05/bin/java -client -Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=48m -XX:MaxPermSize=128m......
10、服務器免密登錄如何實現?
https://blog.csdn.net/simongeek/article/details/53501629
11、Shell中$#,$$,$?,$0分別代表什么?
https://blog.csdn.net/slovyz/article/details/47400107
$$
Shell本身的PID(ProcessID)
$!
Shell最后運行的后台Process的PID
$?
最后運行的命令的結束代碼(返回值)
$-
使用Set命令設定的Flag一覽
$*
所有參數列表。如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數。
$@
所有參數列表。如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數。
$#
添加到Shell的參數個數
$0
Shell本身的文件名
$1~$n
添加到Shell的各參數值。$1是第1參數、$2是第2參數…。
12、Nginx算法
https://blog.csdn.net/gzh0222/article/details/8095994
13、編寫一個Nginx的access模塊,要求准許192.168.3.29/24的機器訪問,准許10.1.20.6/16這個網段的所有機器訪問,准許34.26.157.0/24這個網段訪問,除此之外的機器不准許訪問。
location/{
access 192.168.3.29/24;
access 10.1.20.6/16;
access 34.26.157.0/24;
deny all;
}
http://www.it610.com/article/4921101.htm
14、Nginx優化方面有哪些?
15、請寫出一段Python代碼實現刪除一個list里面的重復元素
https://blog.csdn.net/melody_1314/article/details/7298448
#!/usr/bin/python
#coding=utf-8
List1=[1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7]
List1=list(set(List1))
print(List1)