python運維面試題


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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM