<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Linux運(yùn)維工程師:30道面試題整理

          共 6579字,需瀏覽 14分鐘

           ·

          2022-02-11 12:33

          前段時(shí)間,我在準(zhǔn)備面試的時(shí)搜到的一套 Linux 運(yùn)維工程師面試題,感覺比較全面,一直保存在草稿,剛在整理后臺(tái)時(shí)翻了出來,干脆就發(fā)出來好了,以備不時(shí)之需。

          ?

          1、linux?如何掛在 windows 下的共享目錄


          mount.cifs?//192.168.1.3/server?/mnt/server?-o?user=administrator,pass=123456


          linux?下的 server 需要自己手動(dòng)建一個(gè)? 后面的 user 與 pass 是 windows 主機(jī)的賬號(hào)和密碼 注意空格 和逗號(hào)


          2、查看 http 的并發(fā)請(qǐng)求數(shù)與其 TCP 連接狀態(tài)


          netstat?-n?|?awk?'/^tcp/?{++b[$NF]}?END?{for(a?in?b)?print?a,?b[a]}'


          還有 ulimit -n 查看 linux 系統(tǒng)打開最大的文件描述符,這里默認(rèn) 1024,不修改這里 web 服務(wù)器修改再大也沒用。若要用就修改很幾個(gè)辦法,這里說其中一個(gè):


          修改/etc/security/limits.conf


          *?soft?nofile?10240
          *?hard?nofile?10240


          重啟后生效


          3、用 tcpdump 嗅探 80 端口的訪問看看誰最高


          tcpdump?-i?eth0?-tnn?dst?port?80?-c?1000?|?awk?-F"."?'{print?$1"."$2"."$3"."$4}'?|?sort?|?uniq?-c?|?sort?-nr?|head?-5 


          4、查看/var/log 目錄下文件數(shù)


          ls?/var/log/?-lR|?grep?"^-"?|wc?-l


          5、查看當(dāng)前系統(tǒng)每個(gè) IP 的連接數(shù)


          netstat?-n?|?awk?'/^tcp/?{print?$5}'|?awk?-F:?'{print?$1}'?|?sort?|?uniq?-c?|?sort?-rn


          6、shell 下 32 位隨機(jī)密碼生成


          cat?/dev/urandom?|?head?-1?|?md5sum?|?head?-c?32?>>?/pass


          將生成的 32 位隨機(jī)數(shù) 保存到/pass 文件里了


          7、統(tǒng)計(jì)出 apache 的 access.log 中訪問量最多的 5 個(gè) IP


          cat?access_log?|?awk??'{print?$1}'?|?sort?|?uniq?-c?|?sort?-n?-r?|?head?-5


          8、如何查看二進(jìn)制文件的內(nèi)容


          我們一般通過 hexdump 命令 來查看二進(jìn)制文件的內(nèi)容。


          hexdump -C XXX(文件名)? -C 是參數(shù) 不同的參數(shù)有不同的意義


          -C? 是比較規(guī)范的 十六進(jìn)制和 ASCII 碼顯示

          -c? 是單字節(jié)字符顯示

          -b? 單字節(jié)八進(jìn)制顯示

          -o? 是雙字節(jié)八進(jìn)制顯示

          -d? 是雙字節(jié)十進(jìn)制顯示

          -x? 是雙字節(jié)十六進(jìn)制顯示


          等等等等


          9、ps aux 中的 VSZ 代表什么意思,RSS 代表什么意思


          VSZ:虛擬內(nèi)存集,進(jìn)程占用的虛擬內(nèi)存空間


          RSS:物理內(nèi)存集,進(jìn)程戰(zhàn)用實(shí)際物理內(nèi)存空間


          10、檢測(cè)并修復(fù)/dev/hda5


          fsck 用來檢查和維護(hù)不一致的文件系統(tǒng)。若系統(tǒng)掉電或磁盤發(fā)生問題,可利用 fsck 命令對(duì)文件系統(tǒng)進(jìn)行檢查,用法:


          11、Linux 系統(tǒng)的開機(jī)啟動(dòng)順序


          加載 BIOS–>讀取 MBR–>Boot Loader–>加載內(nèi)核–>用戶層 init 一句 inittab 文件來設(shè)定系統(tǒng)運(yùn)行的等級(jí)(一般 3 或者 5,3 是多用戶命令行,5 是界面)–>init 進(jìn)程執(zhí)行 rc.syninit–>啟動(dòng)內(nèi)核模塊–>執(zhí)行不同級(jí)別運(yùn)行的腳本程序–>執(zhí)行/etc/rc.d/rc.local(本地運(yùn)行服務(wù))–>執(zhí)行/bin/login,就可以登錄了。


          12、符號(hào)鏈接與硬鏈接的區(qū)別


          我們可以把符號(hào)鏈接,也就是軟連接 當(dāng)做是 windows 系統(tǒng)里的 快捷方式。


          硬鏈接 就好像是 又復(fù)制了一份.


          ln 3.txt 4.txt ??這是硬鏈接,相當(dāng)于復(fù)制,不可以跨分區(qū),但修改 3,4 會(huì)跟著變,若刪除 3,4 不受任何影響。


          ln -s 3.txt 4.txt ?這是軟連接,相當(dāng)于快捷方式。修改 4,3 也會(huì)跟著變,若刪除 3,4 就壞掉了。不可以用了。


          13、保存當(dāng)前磁盤分區(qū)的分區(qū)表


          dd 命令是以個(gè)強(qiáng)大的命令,在復(fù)制的同時(shí)進(jìn)行轉(zhuǎn)換


          dd?if=/dev/sda?of=./mbr.txt?bs=1?count=512


          14..沒有 14 題,我自己來個(gè)簡(jiǎn)單的,如何在文本里面進(jìn)行復(fù)制、粘貼,刪除行,刪除全部,按行查找和按字母查找。


          以下操作全部在命令行狀態(tài)操作,不要在編輯狀態(tài)操作。


          在文本里 移動(dòng)到想要復(fù)制的行? 按 yy? 想復(fù)制到哪就移動(dòng)到哪,然后按 P? 就黏貼了


          刪除行? 移動(dòng)到改行 按 dd


          刪除全部? dG? 這里注意 G 一定要大寫


          按行查找? :90 這樣就是找到第 90 行


          按字母查找 /path ?這樣就是 找到 path 這個(gè)單詞所在的位置,文本里可能存在多個(gè),多次查找會(huì)顯示在不同的位置。


          15、手動(dòng)安裝 grub


          grub-install?/dev/sda


          16、修改內(nèi)核參數(shù)


          vi /etc/sysctl.conf? 這里修改參數(shù)


          sysctl -p? 刷新后可用


          17、在 1-39 內(nèi)取隨機(jī)數(shù)


          expr?$[$RANDOM%39]?+?1


          RANDOM 隨機(jī)數(shù)


          %39 取余數(shù) 范圍 0-38


          18、限制 apache 每秒新建連接數(shù)為 1,峰值為 3


          每秒新建連接數(shù) 一般都是由防火墻來做,apache 本身好像無法設(shè)置每秒新建連接數(shù),只能設(shè)置最大連接:


          iptables?-A?INPUT?-d?172.16.100.1?-p?tcp?--dport?80?-m?limit?--limit?1/second??-j?ACCEPT


          硬件防火墻設(shè)置更簡(jiǎn)單,有界面化,可以直接填寫數(shù)字。。。


          最大連接 apache 本身可以設(shè)置


          MaxClients 3 ?,修改 apache 最大連接 前提還是要修改系統(tǒng)默認(rèn) tcp 連接數(shù)。我博客里也說了,這就不說了。


          19、FTP 的主動(dòng)模式和被動(dòng)模式


          FTP 協(xié)議有兩種工作方式:PORT 方式和 PASV 方式,中文意思為主動(dòng)式和被動(dòng)式。


          PORT(主動(dòng))方式的連接過程是:客戶端向服務(wù)器的 FTP 端口(默認(rèn)是 21)發(fā)送連接請(qǐng) 求,服務(wù)器接受連接,建立一條命令鏈路。當(dāng)需要傳送數(shù)據(jù)時(shí),客戶端在命令鏈路上用 PORT 命令告訴服務(wù)器:“我打開了 XX 端口,你過來連接我”。于是服務(wù)器從 20 端口向客戶端的 XX 端口發(fā)送連接請(qǐng)求,建立一條數(shù)據(jù)鏈路來傳送數(shù)據(jù)。


          PASV(被動(dòng))方式的連接過程是:客戶端向服務(wù)器的 FTP 端口(默認(rèn)是 21)發(fā)送連接請(qǐng) 求,服務(wù)器接受連接,建立一條命令鏈路。當(dāng)需要傳送數(shù)據(jù)時(shí),服務(wù)器在命令鏈路上用 PASV 命令告訴客戶端:“我打開了 XX 端口,你過來連接我”。于是客戶端向服務(wù)器的 XX 端口 發(fā)送連接請(qǐng)求,建立一條數(shù)據(jù)鏈路來傳送數(shù)據(jù)。


          從上面可以看出,兩種方式的命令鏈路連接方法是一樣的,而數(shù)據(jù)鏈路的建立方法就完 全不同。


          20、顯示/etc/inittab 中以#開頭,且后面跟了一個(gè)或者多個(gè)空白字符,而后又跟了任意非空白字符的行


          grep?"^#?\{1,\}[^?]"?/etc/inittab


          21、顯示/etc/inittab 中包含了:一個(gè)數(shù)字:(即兩個(gè)冒號(hào)中間一個(gè)數(shù)字)的行


          grep?"\:[0-9]\{1\}\:"?/etc/inittab


          22、怎么把腳本添加到系統(tǒng)服務(wù)里,即用 service 來調(diào)用在腳本里加入


          #!/bin/bash
          #?chkconfig:?345?85?15
          #?description:?httpd

          然后保存


          chkconfig httpd –add? 創(chuàng)建系統(tǒng)服務(wù)


          現(xiàn)在就可以使用 service 來 start or restart


          23、寫一個(gè)腳本,實(shí)現(xiàn)批量添加 20 個(gè)用戶,用戶名為 user01-20,密碼為 user 后面跟 5 個(gè)隨機(jī)字符


          #!/bin/bash
          #description:?useradd
          for?i?in?`seq?-f"%02g"?1?20`;do
          useradd?user$i
          echo?"user$i:`echo?$RANDOM|md5sum|cut?-c?1-5`"|passwd?–stdinuser$i?>/dev/null?2>&1
          done


          24、寫一個(gè)腳本,實(shí)現(xiàn)判斷 192.168.1.0/24 網(wǎng)絡(luò)里,當(dāng)前在線的 IP 有哪些,能 ping 通則認(rèn)為在線


          #!/bin/bash
          for?ip?in?`seq?1?255`
          ??do
          ????{
          ?????ping?-c?1?192.168.1.$ip?>?/dev/null?2>&1
          ?????if?[?$??-eq?0?];?then
          ??????????echo?192.168.1.$ip?UP
          ?????else
          ??????????echo?192.168.1.$ip?DOWN
          ?????fi
          ???}&
          done
          wait


          25、寫一個(gè)腳本,判斷一個(gè)指定的腳本是否是語法錯(cuò)誤;如果有錯(cuò)誤,則提醒用戶鍵入 Q 或者 q 無視錯(cuò)誤并退出其它任何鍵可以通過 vim 打開這個(gè)指定的腳本


          [root@localhost??tmp]#?cat?checksh.sh
          ?#!/bin/bash
          ?read?-p?"please?input?check?script->?"?file
          ?if?[?-f?$file?];?then
          ????sh?-n?$file?>?/dev/null?2>&1
          ????if?[?$??-ne?0?];?then
          ????????read?-p?"You?input?$file?syntax?error,[Type?q?to?exit?or?Type?vim?to??edit]"?answer
          ????????case?$answer?in
          ????????q?|?Q)
          ???????????exit?0
          ???????????;;
          ????????vim?)
          ???????????vim?$file
          ???????????;;
          ????????*)
          ?????????exit?0
          ?????????;;
          ????????esac
          ???fi
          ?else
          ????echo?"$file?not?exist"
          ????exit?1
          ?fi


          26、寫一個(gè)腳本:(26 包括 3 個(gè)小題)


          1、創(chuàng)建一個(gè)函數(shù),能接受兩個(gè)參數(shù):


          1)第一個(gè)參數(shù)為 URL,即可下載的文件;第二個(gè)參數(shù)為目錄,即下載后保存的位置;


          2)如果用戶給的目錄不存在,則提示用戶是否創(chuàng)建;如果創(chuàng)建就繼續(xù)執(zhí)行,否則,函數(shù)返回一個(gè) 51 的錯(cuò)誤值給調(diào)用腳本;


          3)如果給的目錄存在,則下載文件;下載命令執(zhí)行結(jié)束后測(cè)試文件下載成功與否;如果成功,則返回 0 給調(diào)用腳本,否則,返回 52 給調(diào)用腳本;


          [root@localhost?tmp]#?cat?downfile.sh
          #!/bin/bash
          url=$1
          dir=$2
          download()
          ??{
          ????if?[[?!?-d?$dir?]];then
          ????????read?-p?"$dir?No?such?directory,create?(y/n)"?answer
          ????????if?[[?"$answer"?==?"y"?]];then
          ????????????mkdir?-p?$dir
          ????????else
          ????????????return?"51"
          ????????fi
          ????fi
          ????cd?$dir?&&?wget?$url?>/dev/null?2>&1
          ????if?[?$??-ne?0?];?then
          ????????return?"52"
          ????fi
          ????return?0
          }
          download?$url?$dir
          echo?$?


          27、寫一個(gè)腳本:(27 包括 2 個(gè)小題)


          1、創(chuàng)建一個(gè)函數(shù),可以接受一個(gè)磁盤設(shè)備路徑(如/dev/sdb)作為參數(shù);在真正開始后面步驟之前提醒用戶有危險(xiǎn),并讓用戶選擇是否繼續(xù);而后將此磁盤設(shè)備上的所有分區(qū)清空(提示,使用命令 dd if=/dev/zero of=/dev/sdb bs=512 count=1 實(shí)現(xiàn),注意其中的設(shè)備路徑不要寫錯(cuò)了;


          如果此步驟失敗,返回 67 給主程序;


          接著在此磁盤設(shè)備上創(chuàng)建兩個(gè)主分區(qū),一個(gè)大小為 100M,一個(gè)大小為 1G;如果此步驟失敗,返回 68 給主程序;

          格式化此兩分區(qū),文件系統(tǒng)類型為 ext3;如果此步驟失敗,返回 69 給主程序;


          如果上述過程都正常,返回 0 給主程序;


          2、調(diào)用此函數(shù);并通過接收函數(shù)執(zhí)行的返回值來判斷其執(zhí)行情況,并將信息顯示出來;


          if?[[?-n?$1?&&?$1?=~?"/dev/sd[a-z]"?]];
          then?????
          ????local?Darray=(`ls?/dev/sd[a-z]`)
          ????for?i?in?${Darray};do
          ????????[[?"$i"?==?"$1"?]]?&&?Sd=$i?&&?break
          ????done
          else
          ????return?66
          fi
          #當(dāng)匹配成功,進(jìn)入選擇,告訴用戶,是否繼續(xù),輸錯(cuò)的話進(jìn)入無限循環(huán),當(dāng)用戶選擇?Y,則清空目標(biāo)分區(qū),且跳出?while?循環(huán)
          while?:;do
          ????read?-p?"Warning!!!This?operation?will?clean?$Sd?data.Next=y,Quit=n?[y|n]:"?Choice
          ????case?$Choice?in
          y)
          ???dd?if=/dev/zero?of=$Sd?bs=512?count=1?&>?/dev/null?&&break?||?return?67?;;
          n)
          ???exit?88?;;
          *)
          ???echo?"Invalid?choice,please?choice?again."?;;
          esac
          done


          #使用 echo 傳遞給 fdisk 進(jìn)行分區(qū),如果此命令失敗,則跳轉(zhuǎn)出去,錯(cuò)誤值 68,需要注意的是,有時(shí)候這個(gè)返回值很詭異,筆者之前成功與否都是返回的 1,后來重啟之后,就好了,如果慎重的話,可以對(duì)創(chuàng)建的分區(qū),進(jìn)行判斷,不過就需要使用其他工具截取相關(guān)字段了,雖有些小麻煩,但無大礙


          echo-e?"n\np\n1\n\n+100M\nn\np\n2\n\n+1024M\nw\n"|fdisk?/dev/sdb&>?/dev/null?||?return?68


          #格式化之前,讓內(nèi)核重新讀取磁盤分區(qū)表,值得注意的是,有的系統(tǒng)版本,使用 partprobe 無效,譬如筆者的環(huán)境是 rhel5.8,而 rhel6.0 以后,這個(gè)命令就很危險(xiǎn)了,而使用 partx -a /dev/sdb 則效果更好…此項(xiàng)需慎重,如果格式化失敗,則告知把失敗的分區(qū)定義成變量,且跳出函數(shù),并帶出錯(cuò)誤值 69


          `partprobe`
          Part=`fdisk?-l?/dev/$Sd|tail?-2|cut?-d”?”?-f1`
          for?M?in?${Part};do
          ???mke2fs?-j?$M?&>?/dev/null?&&?ErrorPart=$M?&&return?69
          done
          ??return?0
          }


          #下面代碼,調(diào)用函數(shù),接收函數(shù)返回值,根據(jù)返回值進(jìn)行判斷哪里出錯(cuò)。


          Disk_Mod?$1
          Res=$?
          [?$Res-eq?0?]?&&?exit?0
          [?$Res-eq?66?]?&&?echo?"Error!?Invalid?input."
          [?$Res-eq?67?]?&&?echo?"Error!?Command?->?dd?<-?Faild."
          [?$Res-eq?68?]?&&?echo?"Error!?Command?->?fdisk?<-?Faild."
          [?$Res-eq?69?]?&&?echo?"Error!?Command?->?mke2fs?<-?Faild."


          作者:張戈

          鏈接:https://zhangge.net/1986.html



          END



          《華為工程師Linux核心筆記》高清版.pdf

          數(shù)據(jù)庫整理合集:含MySQL、Redis、Mongodb等常見數(shù)據(jù)庫教程

          一張思維導(dǎo)圖,囊括Linux所有知識(shí)點(diǎn),快拿走!

          超全K8s入門進(jìn)階教程-運(yùn)行|部署|監(jiān)控|實(shí)戰(zhàn)一文搞定!



          瀏覽 41
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  操123| 中文字幕无码一区二区三区一本久 | 熟女人妻精品 | 国产色亚洲 | 亚洲视频在线观看 |