(第八周作業(yè))
1舱沧、?列舉常見的內(nèi)核參數(shù)以及參數(shù)的意義
(1)net.ipv4.ip_forward:數(shù)據(jù)包的路由轉(zhuǎn)發(fā)開關(guān),設(shè)置為1表示開啟偶洋,0表示關(guān)閉熟吏。
(2)vm.drop_caches:清空caches,釋放內(nèi)存占用玄窝。設(shè)置為1表示清空 pagecache牵寺,設(shè)置為2表示清空 dentries 和 inodes,設(shè)置為3表示清空所有緩存(pagecache恩脂、dentries 和 inodes)
(3)kernel.hostname:主機(jī)名的內(nèi)核參數(shù)
(4)net.ipv4.icmp_echo_ignore_all:忽略所有外部來的ping請求帽氓,但不影響自己對外外的ping操作。設(shè)置為1表示關(guān)閉ICMP回應(yīng)功能俩块,設(shè)置0表示開啟ICMP回應(yīng)功能黎休。
(5)net.ipv4.tcp_max_tw_buckets:? 設(shè)置TCP最大的timewait數(shù)量。默認(rèn)是180000
(6)net.ipv4.ip_local_port_range :允許系統(tǒng)打開的端口范圍玉凯,值為兩個數(shù)字势腮,中間以空格隔開,分別表示最小端口號和最大端口號漫仆。
(7)net.ipv4.tcp_tw_recycle:啟用timewait快速回收捎拯。設(shè)置為1表示啟用功能。
(8)net.ipv4.tcp_tw_reuse :允許將TIME-WAIT?sockets重新用于新的TCP連接盲厌。設(shè)置為1表示啟用功能署照。
2祸泪、?如何通過/proc查看top中展示的進(jìn)程狀態(tài)
top中展示的進(jìn)程狀態(tài)有:
PID列:進(jìn)程ID,為/proc目錄下的數(shù)字目錄藤树,每個進(jìn)程的PID數(shù)字做為目錄名稱浴滴。
USER :進(jìn)程的所屬用戶,為/proc/PID/status文件中的Uid這行所對應(yīng)的用戶名稱岁钓。
?PR :任務(wù)的調(diào)度優(yōu)先級 , 在/proc/PID/stat文件中第18列數(shù)值
?NI :表示任務(wù)的NICE值升略,在/proc/PID/stat文件中第19列數(shù)值
?VIRT :虛擬內(nèi)存大小(KiB)屡限,任務(wù)使用的虛擬內(nèi)存總量品嚣。 它包括所有代碼,數(shù)據(jù)和共享庫以及已換出的頁面和已映射但未使用的頁面钧大。? ? ? 在/proc/PID/statm文件中第1列數(shù)值(單位為頁)
?RES :表示駐留內(nèi)存大泻渤拧(KiB) ,任務(wù)正在使用的非交換物理內(nèi)存啊央。在/proc/PID/statm文件中第2列數(shù)值(單位為頁)
?SHR :表示共享內(nèi)存大锌粽(KiB),可能與其他進(jìn)程共享的內(nèi)存瓜饥,在/proc/PID/statm文件中第3列數(shù)值(單位為頁)
S? : 為/proc/PID/status文件中State:這行顯示的進(jìn)程狀態(tài)
?%CPU :CPU使用率逝撬,自上一次屏幕刷新以來占用的CPU時間與總CPU時間的百分比。(通過計(jì)算得到)
%MEM :內(nèi)存使用(RES)任務(wù)當(dāng)前使用的可用物理內(nèi)存份額乓土。(通過計(jì)算RES與總內(nèi)存比率得到)
?TIME+ :任務(wù)自啟動以來使用的總CPU時間宪潮,顯示百分之一秒的精度(未找到)在/proc/PID/stat文件中體現(xiàn)為兩個時間之和 :第14列該任務(wù)在用戶態(tài)運(yùn)行的時間?和第15列該任務(wù)在核心態(tài)運(yùn)行的時間
COMMAND列:為/proc/PID/comm文件內(nèi)容
3、?分別用while趣苏、for循環(huán)檢測10.0.0.1/24網(wǎng)段存活的IP地址
10.0.0.1/24網(wǎng)段包含的主機(jī)IP有:10.0.0.1--10.0.0.254.
使用while循環(huán)檢測腳本
#!/bin/bash
ip="1"
while [ "${ip}" != "255" ]
do
{
? ? ? ? {
? ? ? ? ? ? ? ? ping? -c 1 10.0.0.${ip}? &>/dev/null
? ? ? ? ? ? ? ? [ $? -eq 0 ] && echo "10.0.0.${ip} UP"
? ? ? ? }&
? ? ? ? ip=$[$ip+1]
}
done
上面的腳本說明如下:
while條件為"${ip}" != "255",是通過字符串比較狡相,先給ip賦值為"1"字符串,然后通過使用ip=$[$ip+1]使變量ip自增1食磕,當(dāng)ip變量不等于“255”字符串時尽棕,執(zhí)行ping命令,所以程序會從1到254都會執(zhí)行ping命令。在do{.....}done內(nèi)部有一個{ping....}&的語句段是完成ping?操作的芬为,可以把它放在后臺執(zhí)行萄金,這樣可以提高程序的執(zhí)行效率。然后我們來看一下ping操作的過程媚朦。選項(xiàng) -c 1?表示ping的次數(shù)為1,10.0.0.${ip}表示組裝ping的IP地址日戈,這樣通過變量值替換就可以組裝出所有的IP地址询张。&>/dev/null表示把所有的標(biāo)準(zhǔn)輸出和錯誤輸出都寫入到/dev/null這個Linux大黑洞中,即丟棄所有輸出浙炼。因?yàn)槲覀冎幌胫纏ing的命令結(jié)果份氧,而不是它的輸出內(nèi)容唯袄。所以下一步就用?[ $? -eq 0 ]?來檢查前面這個ping命令的執(zhí)行結(jié)果,&&表示如果前一個命令的執(zhí)行結(jié)果為真(即ping?通了)蜗帜,就執(zhí)行后面的echo "10.0.0.${ip} UP"恋拷,顯示對應(yīng)的IP存活。
使用for循環(huán)來寫
#!/bin/bash
for? ? ?ip? ? ?in? ?$(seq 1 254)
do
{
? ? ? ? ping -c 1? 10.0.0.${ip}? ? ?&>/dev/null
? ? ? ? [ $? -eq 0 ] && echo "10.0.0.${ip} is? UP"
}&
done
上面的腳本說明如下:
seq 1 254?可以生成1到254之間的數(shù)字序列(包含1和254)厅缺,然后使用for ip in ...這可以使用這個序列中的每個值代入循環(huán)變量ip蔬顾。循環(huán)體中的代碼與前面while循環(huán)中一樣,已經(jīng)說明過了湘捎,這里不在贅述诀豁。
4、?說明initrd的作用
initrd 是 boot loader initialized RAM disk的縮寫窥妇,表示由 boot loader 初始化的內(nèi)存盤舷胜。在 linux內(nèi)核啟動前, boot loader 會將磁盤等存儲介質(zhì)中的 initrd 文件先加載到內(nèi)存活翩,內(nèi)核啟動時會先訪問該內(nèi)存中的 initrd 文件系統(tǒng)然后才訪問真正的根文件系統(tǒng)烹骨。啟動過程被分為兩個過程,第一過程是執(zhí)行內(nèi)存中的 initrd 文件系統(tǒng)中的初始化文件(在Linux2.4 內(nèi)核是/linuxrc 文件材泄,是由文件系統(tǒng)鏡像生成的沮焕;在Linux2.6內(nèi)核是/init文件,是使用 cpio 工具生成)脸爱,負(fù)責(zé)加載內(nèi)核訪問根文件系統(tǒng)存儲介質(zhì)的驅(qū)動模塊遇汞, 以及加載根文件系統(tǒng)鳞仙。第二過程是執(zhí)行真正的根文件系統(tǒng)中的 /sbin/init 進(jìn)程最铁。
initrd的主要作用:
(1)使linux 發(fā)行版適應(yīng)各種不同的硬件架構(gòu)
? ? Linux發(fā)行版在內(nèi)核中只編譯了基本的硬件驅(qū)動,在安裝過程中通過檢測系統(tǒng)硬件咖城,生成包含安裝系統(tǒng)硬件驅(qū)動的 initrd族檬。linux 發(fā)行版必須適應(yīng)各種不同的硬件架構(gòu)歪赢,但又不可能把所有的驅(qū)動編譯進(jìn)內(nèi)核,否則內(nèi)核會變得臃腫龐大单料。所以Initrd成為linux 發(fā)行版的必備部件埋凯。
(2)livecd適應(yīng)復(fù)雜的硬件環(huán)境。
? ? livecd是一種從CD光盤中直接引導(dǎo)出一個可用的Linux系統(tǒng)扫尖。這種方式面臨更為復(fù)雜的硬件環(huán)境白对,也需要使用Initrd技術(shù)
(3)usb啟動盤必備技術(shù)
? ? 因?yàn)閡sb從驅(qū)動加載到設(shè)備真正可用大概需要幾秒鐘時間。如果將 usb 驅(qū)動編譯進(jìn)內(nèi)核换怖,那在內(nèi)核訪問 usb 設(shè)備時甩恼, usb 設(shè)備通常沒有初始化完畢。所以改為在 initrd 中加載 usb 驅(qū)動,然后休眠幾秒中条摸,等待 usb設(shè)備初始化完畢后再掛載 usb 設(shè)備中的文件系統(tǒng)悦污。
(4)實(shí)現(xiàn)個性化 bootsplash
? ??Boot-splash通過對內(nèi)核打補(bǔ)丁來改變linux控制臺對圖像顯示的支持,通過用戶空間程式來定制啟動logo钉蒲、設(shè)定控制臺背景和顯隱啟動時的字符信息切端,甚至能夠支持開機(jī)畫面的動畫顯示。在 linuxrc 腳本中可以很方便地啟用個性化 bootsplash顷啼。