發布時間:2024-01-24閱讀(10)
Linux運維學習中shell有哪些重要知識點?Linux面試題分享
第1章 Shell1 選擇1.1 改變bash的提示符實際上就是改變變量()$HOME $PWD $PS1 $PS2
1.2 在shell腳本中,用來讀取文件內各個域的內容并將其賦值給shell變量的命令是__fold join tr read
1.3 從后臺啟動進程,應在命令的結尾加上符號()A:& B:@ C:# D:$
1.4 不是shell具有的功能和特點是()A:管道 B:輸入輸出重定向 C:執行后臺進程 D:處理程序命令
1.5 退出交互模式的shell,應鍵入()A: B:^q C:exit D:quit
1.6 shell不僅僅是用戶命令解釋器,同時一種強大的編程語言,linux缺省的shell是bash ruby PHP perl
1.7 以下函數中,和其他函數不屬于一類的是Read pread write pwrite fseek lseek
1.8 下列變量名中有效的shell變量名是:__-2-time _2$3 trust_no_1 2004file
1.9 下列對shell變量FRUTT操作,正確的是__為變量賦值:$FRUTT=apple 顯示變量的值:fruit=apple
顯示變量的值:echo $FRUTT 判斷變量是否有值:[ -f --$FRUTT || ]
1.10在shell編程中關于$2的描述正確的是程序后攜帶了兩個位數參數 宏替換
程序后面攜帶的第二個位置參數 攜帶位置參數的個數
1.11在shell環境下想把‘gyyx’值賦給變量company,下面哪個是正確的:company = gyyx $company=gyyx company=gyyx company=gyyx
1.12下面sed刪除行,下面哪個腳本是錯誤的是sed -e /man/d filename sed -e 1,3d filename sed -e 1,/man/d filename sed -e /man/3d filename
1.14下列代碼樣例中,哪個存在錯誤:for filename in $(ls) do cat $filename done
for((i=0;i<10;i )) do echo $i done
x=1 sum=0 while [ $x -le 10 ] do let sum=sum $x let x=x 1 done echo $sum
for $i in 1 2 3 4 5 do echo $i done
1.15在shell腳本中,用來讀取文件內各個域的內容并將其賦值給shell變量的命令是:Fold join tr read
1.16shell中如何跳出當前循環繼續之后的循環break continue exit kill
1.17shell腳本中的注釋符# // /**/ " "
1.18采用bash執行shell腳本時加上哪個參數可以跟蹤執行腳本過程-x -u -f -p
1.19以下命令執行后,結果為()var1=abcdedf
Var2=abcded
Echo “$var1” |grep -q “$var2” && echo “yes” ||echo “no”
無結果 語法錯誤 yes no
1.20在shell比較運算符中,數值測試“等于則為真”的是()-ne -ge -eq -le

$0 $n $# $? $* $$ ${#aa}
2.3 編寫shell程序之前必須賦予該腳本_2.4 Linux系統shell腳本第一行需寫__代表什么意義_2.5 編寫shell腳本時注釋符是_2.6 shell命令“sed -i s/ / /g test.txt”實現的是_3 簡答3.1 在shell中,$0,$n,$#,$*,$@,$?分別是什么含義?3.2 統計/var/log下文件的個數。3.3 如何將F1文件的運行結果輸出到F2.txt里?3.4 寫一個腳本實現判斷192.168.1.0/24 網絡里,當前在線的ip有哪些,能拼通則認為在哪3.5 根據以下信息:IP_Address MAC_Address Interface Static
10.66.10.250 80:71:7A:33:CA:A7 br on
10.66.10.249 5C:50:15:7F:3B:F5 br on
將以上文件名稱test.txt文件中IP_Address,MAC_Address, Interface三項下的內容取出來,值以“:”分割,并呈格式顯示出來。注:
10.66.10.250:80:71:7A:33:CA:A7:br
10.66.10.249:5C:50:15:7F:3B:F5:br
3.6 在shell中變量的賦值有四種方法,其中采用name=jfedu.net的方法稱:直接復制 使用read命令 使用命令行傳參 使用命令輸出
3.7 編寫一個腳本,5分鐘檢查一次日志,發現有暴力SSH破解現象的,提取此類IP地址,并去重,并按降序排序。要求:同一個IP暴力破解超過10次,自動屏蔽IP地址,指定辦公室IP地址(192.168.100.100)為可信任IP地址,不受屏蔽規則限制,以下為日志格式:
日志樣式:
May 4 03:43:07 tz-monitor sshd{14003}: Failed password for root from 124.232.135.84 port 25251 ssh2
Myy 4 03:43:07 tz-monitor sshd{14082}: invalid user postgres from 124.232.135.84
3.8 檢查OSPF route-ID配置,配置如下,請用shell編寫代碼,條件如下:a.檢查ospf的route-id值,route-id值必須與interface LoopBack0的IP地址值相同,如果兩個值不相等打印出ospf的route-id的值,并且ospf的route-id值必須以139開頭,如139.xx.xx.xx,否則也打印出route-id的值ofpf 100
route-id 139.11.0.1
area 0.0.0.0
network 139.11.0.1 0.0.0.0
network 140.11.0.0 0.0.0.3
network 140.11.0.8 0.0.0.3
network 140.11.0.16 0.0.0.3
network 140.11.0.24 0.0.0.3
network 140.11.0.32 0.0.0.3
interface LoopBack0
ip address 139.11.0.1 255.255.255.255
3.9 檢查IP地址合規,請用shell編寫代碼,列出不以199或200開頭的IP地址,如199.x.x.x 或200.x.x.xInterface Physical Protocol IP Adderss
Eth1/0/1 up up 199.11.250.1
Eth1/0/2 up up 200.11.250.5
Loop0 up up(s) 199.11.250.1
Vlan1 *down down unassigned
Vlan500 down down 139.100.1.157
Vlan900 up up 140.11.250.41
3.11在單臺服務器Linux操作系統環境下,寫一行命令,將所有該機器的所有以“.log.bak“為后綴的文件,打包壓縮并上傳到ftp上,FTP地址為123.234.25.130的/home/bak文件夾3.12Linux腳本:現在要刪除本機中若干文件,/root/file.list中記錄了這些文件的絕對路徑,請用腳本實現。/root/file.list內容范例:/tmp/1.file3.13說出shell的種類,已經常用的shell3.14下面代碼會輸出什么:def f(x,1=[]);
for i in range(x);
1.append(i*i)
print 1
f(2)
f(3,[3,2,1])
f(3)
3.16創建一個函數,能接受兩個參數;(1) 第一個參數為URL,即可下載的文件;第二個參數為目錄,即下載后保存位置;
(2) 如果用戶給的目錄不存在,則提示用戶是否創建;如果創建就繼續執行,否則函數返回一個51的錯誤值給調用腳本
(3) 如果給的目錄存在,則下載文件;下載命令執行結束后測試文件下載成功,如果成功,則返回0給調用腳本,否則,返回52給調用腳本;
3.17有一個長度為n序列,需要移除掉里面的重復元素,但是對于每種元素保留最后出現的那個。輸入描述:輸入包括兩行第一行為序列長度n(1≤ n≤ 50)
第二行為n個數scqucencel,以空格分隔
輸出描述
輸出消除重復元素之后的序列,以空格分隔,行末無空格
輸入例子
100 100 100 99 99 99 100 100 100
輸出例子
99 100
3.18使用一個隊列模擬一個棧,在空白處實現下面類中的方法即可。class Queue(objec ):
defenqueue(self,item):
"""入隊""""
defdequcue(self):
""""出隊"""
測試
q = Queue()
9 enqucue (1)
輸出q [1]
q.enqueue(4)
輸出q [1,4]
q.dequeue()
輸出14
3.20一個文本文件info.txt每行都是以逗號分隔,其中第二列都是數字,請對該文件按照第二列從小到大排列。aa,101
bb,302
cc,222
dd,44
3.21通過shell如何刪除文檔中的注釋和空白行。3.22根據要求寫出linux命令a.顯示當前目錄的內容
b.以詳細格式顯示test用戶的家目錄內容,包含隱藏文件
c.進入根目錄
d.顯示/etc/passwd文本文件的內容
e.顯示/etc/passwd文件的后十行內容
3.23用netstat統計系統當前tcp連接的各種狀態的連接數3.24寫一個腳本,實現判斷10.10.10.0/24網絡里,當前在線的ip有哪些。注:能ping通則認為在線。3.25怎么把腳本添加到系統服務里,即使用service來調用。3.26統計指定文件中每個單詞出現的次數;如cat /etc/fstab# /etc/fstabUUID=94e4e384-Oace-437f-bc96-057dd64f42ee / ext4 defaults.barrier=0 1 1tmpfs /dev/shm tmpfs defults 0 0
列出如下菜單給用戶
disk) show disks info;
mem) show memory info;
cpu) show cpu info;
*) quit;
提示用戶給出自己的選擇,而后顯示對應其選擇的相應系統信息
3.28請寫出一個shell腳本希望把結構表顯示出來3.29求出a.log中的waring 但是不包括waring的行3.30說明以下shell 代碼,所完成的功能n=1while [ $n -lt 1000 ]; do cd /root/perl_test/testdir touch sn.txt n=expr $n 1done
如果在/home/pushmail目錄下不存在leadtone目錄,則創建該目錄,并將/var/sync/bin目錄下的所有文件拷貝到leadtone目承下,但是不能夠拷貝文件長
度大于1M的文件。
3.32根據要求寫出linux命令a.顯示當前目錄的內容
b.以詳細格式顯示test用戶的家目錄內容,包含隱藏文件
c.進入根目錄
d.顯示/etc/passwd文本文件的內容
e.顯示/etc/passwd文件的后十行內容
3.33查找含有特定字符的文件3.34Centos操作系統歷史命令記錄中,執行次數最多的5條3.35寫一個腳本,判斷一個指定的腳本是否是語法錯誤,如果有錯誤,則提醒用戶鍵入Q或者q無視錯誤并退出其它任何鍵可以通過vim打開這個指定的腳本3.36用Shell編程,判斷一文件是不是字符設備文件,如果是將其拷貝到 /dev 目錄下3.37寫一個腳本,實現批量添加20個用戶,用戶名為user01-20,密碼user后面跟5個隨機字符3.38統計nginx訪問日志,找出訪問次數前10的IP3.39找出在文件a中但不在文件b中的內容,用命令后編寫腳本實現3.40對文件test中,1>第一列為aaa的行求和;2>對偶數行求和;3>求文件test中的最大值3.41Case語句的語法?while 語句的語法?continue命令的作用?3.42請寫出下列shell腳本:使用for循環在/opt目錄下通過隨機小寫10個字母加固定字符串test批量創建10個html文件,創建完成后將test全部改為test_done(for循環實現),并且html大寫3.44如何在每天23:59分時,將apache的accesslog中,訪問次數最多的前10個ip以及訪問量最多的10個文件保存到/var/Top.log中3.45寫一個腳本,判斷一個指定的腳本是否是語法錯誤。如果有錯誤,則提醒用戶鍵入Q或q無視錯誤并退出其它任何鍵可以指定的腳本3.46shell腳本編程:求100以內的質數3.47如果有10個文件夾,每個文件夾都有1,000,000個url,每個url對應一個訪問量,請問如何最快找出前1,000,000個訪問量最高的url3.48創建一個shell腳本,它從用戶那里接收10個數,并顯示已輸入的最大的數3.49設計一個shell程序,在每月第一天備份并壓縮/etc目錄的所有內容,存放在/root/bak目錄里,且文件名為如下形式yymmdd_etc,yy為年,mm為月,dd為日。shell陳旭fileback存放在/usr/bin目錄下3.50找出系統中父進程號為105的所有進程,并將其結束3.51如何從history記錄中分析最近500次內執行最多的命令?如何查找當前目錄90天以前的文件并將其刪除?3.52寫出命令統計當前連接到本機6379端口連接數最高的ip地址和連接個數,查看自己的ip地址,看這個ip地址所在網段都有哪些機器,任意查看此網段的另外一個ip地址有哪些端口開放了。簡述tcp的幾種連接狀態,高并發服務器一般會遇到什么問題?3.53下面給出了一個shell程序,試對其行后有#(號碼)形式的語句進行解釋,并說明程序完成的功能#!/bin/bashDICNAME=`ls /root |grep bak` #(1)if [ -z "$DICNAME" ] then #(2)mkdir /root/bak cd /root/bak #(3)fiYY=`date %y` MM=`date %m` DD=`date %d` #(4)BACKETC=$YY$MM$DD_etc.tar.gz #(5)tar zcvf $BACKETC /etc #(6)echo "fileback fiaished!"
config.properties文件格式如下:
zookeeper.server=127.0.0.1:2181
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://lx-db:3306/gudong
jdbc.username=lanxin
jdbc.password=OnLIDX5
3.56會哪些編程語言?寫過哪種shell腳本?請現場編寫一組3.57判斷數字大于500則執行big.sh 小于等于500則退出腳本,并輸出報錯信息3.59文件ip.txt中包含很多IP地址(以及其它非IP數據),請打印出滿足A.B.C.D 其中A=172 C=130 D<=100 條件的所有IP(請用AWK實現)3.60請編寫一個可遞歸創建3級hash目錄的shell腳本,hash目錄名分別為 a b c d e f 0 1 2 3 4 5 6 7 8 9 (請用bash實現)3.61統計web服務器上網絡連接的各個狀態(ESTABLISHED/SYN_SENT/SYN_RECV等)的個數并按倒序排列3.62腳本測試test.txt文件1 2 3
4 5 6
7 8 9
打印出每一列的累加值
3.63請在linux下寫個bash shell 程序,目的如下:查找/opt/mp3目錄下所有mp3后綴的文件,然后計算下每個md5值,文件名跟md5值寫入新的文件mp3-md5.txt文件3.64請寫出完成下面工作的Linux shell命令或腳本(1)查看服務器的硬盤占用量
(2)將/usr/test目錄下大于100K的文件轉移到/tmp目錄下
(3)殺死所有啟動的servicefx_asr進程
(4)假設某nginx server的日志access.log如下:
198.24.230.194 - - [10/Oct/2015:10:23:50 0800] “POST /asr/recognize HTTP/1.1 200 177 “-” ”-”
請查找在2015/10/10,10點這一個小時內,訪問“/CheckAuth”接口的IP一共有幾個,每個各訪問了多少次
3.65執行$ time sleep 2 輸出如下real 0m2.003s
user 0m0.004s
sys 0m0.000s
請說明real、user、sys三者具體代表的意思和區別
3.66編寫腳本完成以下工作某目錄下有兩個文件a.txt和b.txt,文件格式為(ip username),例如:
a.txt b.txt
127.0.0.1zhangsan 127.0.0..4lixiaoliu
127.0.0.1wangxiaoer 127.0.0.01lisi
127.0.0.2lisi
127.0.0.3wangwu
每個文件至少有100萬行,請使用Linux命令完成下列工作
1)兩個文件各自的IP數,以及總IP數
2)出現再b.txt而沒有出現再a.txt的IP
3)每個username出現的次數,以及每個username對應的IP數
3.67現在一個REST API服務(名稱為ab-service),進程啟動后占用8038端口進行網絡通信。現需要一個Bash Shell腳本(start.sh),在一臺Linux機器上啟動這個服務,并通過8038端口對所有內外網IP服務。請寫出完整的可運行腳本,并盡量考慮可能出現的情況并處理,歡迎分享轉載→http://www.avcorse.com/read-213629.html
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖