Linux運維面試題及解答(二)

1、描述centos6系統開機啓動流程;

1.1加載BIOS的硬件信息與進行自我測試,並依據設置取得第一個可啓動的設備;

1.2讀取並執行第一個啓動設備內MBR的boot Loader(即是grub,spfdisk等程序);

1.3依據bootloader的設置加載Kernel,Kernel會開始檢測硬件與加載驅動程序;

1.4在硬件驅動成功後,Kernel會主動調用init進程,而init會取得run-level信息;

1.5init執行/etc/rc.d/rc.sysinit文件來準備軟件執行的操作環境(如網絡,時區等);

1.6init執行run-level的各個服務的啓動(script方式);  

1.7init執行/etc/rc.d/rc.local文件;

1.8init執行終端機模擬程序mingetty來啓動login進程,最後就等待用戶登錄。

2、描述/etc/rc.d/sysinit腳本功能;

2.1  取得網絡環境與主機類型:

讀取網絡配置文件/etc/sysconfig/network ,取得主機名與默認網關(gateway) 等網絡環境。

2.2測試與掛載內存裝置 /proc 及 USB 裝置 /sys:

除掛載內存裝置 /proc之外,還會主動偵測系統上是否具有 usb 的裝置, 若有則會主動加載 usb 的驅勱程序,並且嘗試掛載 usb 的文件系統。

2.3決定是否啓動SELinux :

並且檢測是否需要幫所有的檔案重新編寫標準的 SELinux 類型 (auto relabel)。

2.4啓動系統的隨機數生成器

隨機數生成器可以幫劣系統迚行一些密碼加密演算的功能,在此需要啓動兩次隨機數生成器。

2.5設定終端機 (console) 字形:

2.6設定顯示於開機過程中的歡迎畫面 (textbanner);

2.7.設定系統時間(clock) 與時區設定:需讀入 /etc/sysconfig/clock 設定值

2.8.接口設備的偵測Plug and Play (PnP) 參數的測試:

根據核心在開機時偵測的結果 (/proc/sys/kernel/modprobe ) 開始進行 ide /scsi / 網絡 / 音效 等接口設備的偵測,以及利用以加載的核心模塊進行 PnP 裝置的參數測試。

2.9.用戶自定義模塊的加載

使用者可以在 /etc/sysconfig/modules/*.modules 加入自定義的模塊,則此時會被加載到系統當中

2.10.加載核心的相關設定:

 系統會主動去讀取 /etc/sysctl.conf 這個檔案的設定值,使核心功能成爲我們想要的樣子。

2.11.設定主機名與初始化電源管理模塊 (ACPI)

2.12.初始化軟件磁盤陣列:

主要是透過 /etc/mdadm.conf 來設定好的。

2.13.初始化 LVM 的文件系統功能

2.14.以 fsck 檢驗磁盤文件系統:會迚行 filesystem check

2.15.進行磁盤配額 quota 的轉換 (非必要):

2.16.重新以可擦寫模式掛載系統磁盤:

2.17.啓動 quota 功能:所以我們不需要自定義 quotaon 的動作

2.18.啓動系統虛擬隨機數生成器(pseudo-random):

2.19.清除開機過程當中的臨時文件:

2.20.將開機相關信息加載/var/log/dmesg 檔案中。

 

3、寫一個腳本,生成10個隨機數,並按從小到大進行排序(要求至少使用2中方法);

腳本一:

#!/bin/bash

#Program:

#       RANDOM 10 integer and sort from min tomax ,then print them!

#History:

#       2016/01/25 Tryrus First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATH

 

declare-i min

declare-i max

declare-i i

declare-a arrayRAN

i=1

 echo "The 10 Random integer are: "

arrayRAN[i]=$RANDOM

min=${arrayRAN[i]}

max=${arrayRAN[i]}

while[ $i -le 10 ]

do   

       echo ${arrayRAN[i]}

         if[ ${arrayRAN[i]} -lt $min ];then

                 min=${arrayRAN[i]}

        elif [ ${arrayRAN[i]} -gt $max ];then

                 max=${arrayRAN[i]}

        fi

       i=i+1

       arrayRAN[i]=$RANDOM

done

echo"The Min Random integer is:" $min

echo"The Max Random integer is:" $max

運行結果一:

wKiom1a1h3rzkpxRAABQ1LP9BLg036.jpg

腳本二:

#!/bin/bash

#Program:

#       RANDOM 10 integer and sort from min tomax ,then print them!

#History:

#       2016/01/27 Tryrus First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATH

 

declare-i min

declare-i max

declare-i i

declare-i m

echo"The 10 Random integer are: "

m=$RANDOM

min=$m

max=$m

echo$m

for((i=2; i<=10; i++))

do

        m=$RANDOM

        echo $m

        if [ $m -lt $min ];then

                 min=$m

        elif [ $m -gt $max ];then

                 max=$m

        fi

done

echo"The Min Random integer is:" $min

echo"The Max Random integer is:" $max

運行結果二:

wKioL1a1h9DRkulBAABPMFH3IiM499.jpg

4、在每週二的凌晨1點5分執行腳本/data/get_username.sh,並將腳本的輸出至/tmp/get_username.log日誌文件中;

4.1啓用週期服務crond

wKioL1a1jGCgJdEQAAFog3sxIoc405.jpg

4.2測試腳本

wKiom1a1jAyCgp94AACSMPOpPF8997.jpg

4.3  本題的腳本

wKioL1a1jGGRvMUGAABNGJXhAPY437.jpg

5、寫一個腳本:如果某路徑不存在,則將其創建爲目錄;否則顯示其存在,並顯示內容類型;

腳本:                                                          

#!/bin/bash

#Program:

#      Test the file directory is exists ornot.And test the file's filetype.

#History:

#       2016/01/27 Tryrus First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATH

 

read-p "Please input a file directory,I will check the directory's type." fd

test-z $fd && echo "You MUST input a file directory." &&exit 0

if[ -f "$fd" ];then

       echo "The $fd is exists"

       test -b $fd &&filetype="block file"

       test -c $fd &&filetype="character file"

       test -f $fd && filetype="regularefile"

       test -h $fd &&filetype="symbolic link"

       test -p $fd &&filetype="named pipe"

       test -S $fd &&filetype="socket file"

  echo "The filename: $fd is a$filetype"

else

       mkdir $fd

       echo "Creat the directory $fdsucceed"

fi

結果截圖:

wKiom1a1jK_gLJWzAAG7z7WgJs4930.jpg


6、寫一個腳本,打印9X9乘法表;

腳本:

#!/bin/bash

#Program:

#      Print Nine Nine Multiplication Table

#History:

#       2016/01/27 Tryrus First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATH

 

declare-i i

declare-i m

for((i=1;i<=9;i++))

do  

       m=1

       while [ $m -le $i ]

       do

              echo -e -n  "${m}x${i}=$[$i*$m] \t"

              m=m+1

       done

       echo

done

結果截圖:

wKioL1a1jTyCXK-JAAEQ9fmeL9Y542.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章