linux shell面試題 之三

2021-09-04 17:12:36 字數 4781 閱讀 2878

由於工作的關係,收集了很多的shell面試題,有些比較有意思,比如我在

shell圖形化監控網路流量中所應用的例項。有些純粹是為折磨人用的題目。有的看完會心一笑,有的看了之後會以為是幾年前開發的面試題。不知道是會的人多了,還是有意的為難,想起一句話,廟小妖風大,水淺那個啥多。

多說一句,解決的方法有很多種,也許這裡給出的答案並不是最優的,但應該是比較容易解釋,容易理解的。具體是什麼公司的面試題就不說了,畢竟是人家的隱私。

這篇內容中所涉及的知識點比較多,設定的陷阱更是不少,可以感覺到出題人的挖空心思,可以考驗出答題人對於系統,對於實際環境的管理能力及功底。

1.如下是對api介面日誌的擷取,存放在check.log檔案中

22:57:36|check|por1|117.136.15.67|4|username|fail|5|29|

22:57:36|check|por1|183.1.94.215|4|username|succ|1644841971|14|

22:57:36|check|pro2|0.0.0.0| |username|succ|162885433|6|

22:57:36|check|por2|0.0.0.0|9|username|fail|-4038|0|

22:57:36|check|por3|120.11.82.19|2|username|fail|5|49|

22:57:36|check|por4|172.16.86.82|0|username|succ|1548062613|1|

22:57:36|check|por2|123.125.156.135|9| |succ|1632786393|1|

22:57:36|check|por5|124.231.21.100|5|username|succ|224803739|3|

22:57:36|check|por4|172.16.86.82|0|username|succ|1505887155|1|

22:57:36|check|por2|0.0.0.0|9|username|succ|1343846051|1|

22:57:36|check|por6|113.193.202.138|8|username|succ|1729273615|1|

22:57:36|check|por6|116.75.149.20|8|username|succ|1729981552|1|

22:57:36|check|por5|116.5.164.94|5|username|succ|214405328|1|

22:57:36|check|por2|0.0.0.0|9|username|succ|1433162137|1|

22:57:36|check|por3|218.69.6.30|5|username|succ|28725136|42|

22:57:36|check|por2|0.0.0.0|8| |fail|5|4|

22:57:36|check|por5|123.115.102.222|5|243905232|succ|243905232|1|

22:57:36|check|por4|172.16.86.82|0|1011711900|succ|1011711900|39|

日誌各欄位代表的意義如下:

時間|介面名稱|使用該介面的產品名稱|呼叫介面的ip位址|使用者型別|使用者賬號名稱|介面返回結果(succ or fail)|當介面返回結果為「succ」時,該字段為用

戶唯一編號;當介面返回結果為「fail」時,該字段為介面返回的錯誤代號|介面執行時間(毫秒級別)

問題:請使用shell命令的組合得到每個產品呼叫該介面成功時介面的平均執行速度,並按照執行速度由低到高排序(注:使用者型別和使用者賬號名稱為空的訪問不

計算在內),以如下格式輸出:

pro1 :0.0714286

pro2 :0.3333333

pro3 :0.0238095

pro4 :0.0731707

pro5 :0.6

pro6 :1

一句話思路:有計算、有排序,awk是唯一選擇。統計總數的同時,還要統計出現次數,最後進行計算。

awk -f "|" '$(nf-3)~/succ/end' check.log

知識點:awk陣列,awk管道,為避免不等長使用nf變數

2.用一行命令實現:查詢當前目錄下(含子目錄),檔案內容中含有sina且檔名以".config"結尾的檔案

一句話思路:批量按規則查詢檔案內容grep

grep -lr "sina" ./ | grep -p "(.*)(\.config$)"

知識點:grep -r 遞迴查詢,-p支援perl正規表示式

3.用shell查詢以「.」結尾的檔案,並加上字尾「.ts」

一句話思路:在之前的曾經有過批量修改副檔名的例項,但這次有所不同,使用find命令就可以搞定

find ./ -name "*." -exec mv {} {}ts \;

知識點:find命令

4.假定某個web伺服器訪問log其中一行如下:

該log檔案超過10萬行,如果列出最後的10萬行中請求最多前十位ip,顯示如下的結果:

119 211.101.169.200

103 211.101.169.206

50 61.149.38.249

11 202.106.138.194

請用一行命令顯示出上面的結果

一句話思路:之前有過類似的,這裡不再贅述

awk 'end' log

5.linux下ifconfig命令顯示結果如下:

eth0 link encap:ethernet hwaddr 00:0c:29:aa:e6:44

inet addr:192.168.213.128 bcast:192.168.213.255 mask:255.255.255.0

inet6 addr: fe80::20c:29ff:feaa:e644/64 scope:link

up broadcast running multicast mtu:1500 metric:1

rx packets:39962 errors:0 dropped:0 overruns:0 frame:0

tx packets:27038 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

rx bytes:35108954 (33.4 mib) tx bytes:6573610 (6.2 mib)

base address:0x2000 memory:c9020000-c9040000

lo link encap:local loopback

inet addr:127.0.0.1 mask:255.0.0.0

inet6 addr: ::1/128 scope:host

up loopback running mtu:16436 metric:1

rx packets:1833 errors:0 dropped:0 overruns:0 frame:0

tx packets:1833 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

rx bytes:4840659 (4.6 mib) tx bytes:4840659 (4.6 mib)

執行如下命令

/sbin/ifconfig eth0|grep 'inet '|sed 's/^.*addr://g'|sed 's/ bcast.*$//g'

請寫出命令的輸出結果

ip位址 猶豫了一下這個要不要寫,在命令列裡執行一下就行了。

6.多執行緒/多程序 程式同時訪問相同的資源(例如:同時向乙個檔案裡寫資料)需要注意些什麼?

至少注意檔案鎖,讀鎖與寫鎖

7.寫指令碼實現,可以用shell,perl等。把檔案b中有的,但是檔案a中沒有的所有行,儲存為檔案c,並統計c的行數

diff b a | grep "<" | sed 's/< //' > c

8.指令碼實現把/tmp/目錄下所有建立超過7天的檔案刪除

find /tmp -mtime +7 -exec rm -rf {} \;

9.把1 2 3 4 5 6按如下格式輸出 1

2 3

4 5

6如何實現

echo 1 2 3 4 5 6 | sed "s# #\n#g"

10.設計乙個shell程式,在2023年12月23日凌晨3點備份並壓縮前一天/svn目錄的所有內容,存放在/root/bak目錄裡,且檔名為如下形式svn.2008.05.06.tar.gz,試寫指令碼。

at 201212230300

at> find /svn -mtime +1 -and -mtime -2 -exec cp -r {} /root/bak \;

at> tar -czf svn.2008.05.06.tar.gz /root/bak

感謝何運濤同學,已經畢業的同學,薪水也不錯。現在我們是同行了,這些題目是他幫忙整理的,原始版本都是**,都是他乙個乙個字打上去的,尤其是第一題!

linux shell面試題 之三

由於工作的關係,收集了很多的shell面試題,有些比較有意思,比如我在 shell圖形化監控網路流量中所應用的例項。有些純粹是為折磨人用的題目。有的看完會心一笑,有的看了之後會以為是幾年前開發的面試題。不知道是會的人多了,還是有意的為難,想起一句話,廟小妖風大,水淺那個啥多。多說一句,解決的方法有很...

面試題總結 Linux Shell相關

序號命令 命令解釋 1top 檢視記憶體 2df h 檢視磁碟儲存情況 3iotop 檢視磁碟io讀寫 4iotop o 直接檢視比較高的磁碟讀寫程式 5netstat tunlp grep 埠號 檢視埠占用情況 6uptime 檢視報告系統執行時長及平均負載 7ps aux 檢視程序 序號工具注釋...

C C 面試題之三(每次10題)

說說框架與設計模式的區別 c 和c定義結構的分別是什麼?建構函式可否是虛函式,為什麼?析構函式呢,可否是純虛的呢?拷貝建構函式相關問題,說說深拷貝,淺拷貝,臨時物件分別是什麼意思?結合1個你認為比較能體現oop思想的專案,用uml來描述。最好這個專案繼承,多型,虛函式都有體現 這個問題大概會佔面試時...