目錄
在軟件測試工程師的面試當中,肯定會遇到關於
Linux
和Shell
相關的面試題。下面從三個部分給大家說一下相關的套路。
(1)第一部分是摸底
,通過詢問使用過的命令
和是否編寫過腳本
來大致查看測試人員的在該方面的能力。
(2)第二部分是考察具體命令
,通過詢問相關常用命令(例如文件檢索
或網絡統計
)來查看在Linux方面的具體執行能力。
(3)第三部分是綜合能力
,也就是進階問題。這裏可以以性能測試爲例,就是如何使用命令查看服務器相關的數據,並對數據進行分析。
一、第一關——摸底
1.1 用過哪些命令
- 根據命令的用途分類回答
- 常見的Linux基本命令:
文件
、進程
、網絡
。 該部分內容可以我前面的博客:寫給“大忙人”收藏的Linux常用命令教程
- 常見的數據分析工具:Linux三劍客、sort、uniq、head。該部分內容可以我前面的博客:
Linux三劍客——grep、awk、sed命令基本使用教程
1.2 是否寫過腳本
- 摸底Linux使用深度,用腳本做過什麼有價值的事情
自動化任務
(自動化測試、環境部署、任務調度),數據分析
二、第二關——考察具體命令
2.1 文件檢索
-
如何找到特定目錄下後綴爲 .jar 的所有文件?
find . -name "*.jar" find . -type f -name "*.jar"
-
如何在特定目錄下找到包含特定數據的文件?
find . | xargs grep "hello" find . -type f | xargs grep "hello" find . -type f -name "*.txt" | xargs grep "hello" find . -type f -name "*.txt" | xargs grep "hello" -l
2.2 網絡統計
- 如何查看當前開放的端口和進程?
netstat -tlnp netstat -tlnp|wc -l netstat -tlnp|grep sshd|wc -l
- 壓測時如何統計當前機器的連接數?
netstat -nat | grep ESTABLISHED | wc -l
2.3 進程查看
- 查看指定進程並殺死進程
ps -ef|grep jmeter ps -aux|grep jmeter kill -9 進程號
三、第三關——綜合能力
3.1 性能分析——如何統計某個進程的 CPU 和內存的增長情況?
-
top
命令顯示機器中的所有進程,複製要查看進程的進程idtop
-
top -p 進程號
顯示指定進程的數據top -p 1305
-
top -b -p 進程號 -n 1
:取消可交互模式,並顯示最近的一次的數據。top -b -p 1305 -n 1
-
top -b -p 進程號 -n 1 | tail -1 | awk '{print $9 $10}'
:顯示最後一行數據,並顯示其中第9、10列數據top -b -p 1305 -n 1 |tail -1|awk '{print $9,$10}'
-
while true;do sleep 1;top -b -p 1305 -n 1|tail -1|awk '{print $9,$10}'; done'
:通過在此基礎上添加while循環,每秒查看數據while true;do sleep 1;top -b -p 1305 -n 1|tail -1|awk '{print $9,$10}'; done
3.2 數據統計
-
有一份 Nginx 日誌文件,第一列是 IP,如何給出訪問量前三的 IP 地址?
-
首先通過命令輸入所有的IP
awk '{print $1}' nginx.log | less
-
通過管道命令加上
sort排序
awk '{print $1}' nginx.log | sort | less
-
通過管道命令加上
uniq 去重
並使用tail
3顯示前三awk '{print $1}' nginx.log | sort | uniq -c |sort -n |tail -3