1、列舉常見的內核參數以及參數的意義。
查看方式 sysctl -a
參數及意義
參數名 | 取值 | 說明 |
---|---|---|
net.ipv4.ip_forward | 0,1 | 是否開啓數據包轉發 |
net.ipv4.conf.default.rp_filter | 0,1 | 對從默認網卡進來的數據包進行反向路徑校驗 |
net.ipv4.conf.default.accept_source_route | 0,1 | 是否接受含有源路由信息的ip包 |
net.ipv4.tcp_max_tw_buckets | size | 處於time_wait狀態的最大數值,超過則立刻被清除 |
net.ipv4.ip_local_port_range | start end | 對外連接端口範圍 |
net.ipv4.tcp_max_syn_backlog | size | SYN隊列的長度 |
fs.file-max | size | 系統打開的最大文件句柄數 |
kernel.hostname | string | 主機名 |
net.ipv4.icmp_echo_ignore_all | 0,1 | 忽略所有ping |
2、如何通過/proc查看top中展示的進程狀態
Linux系統上的/proc目錄是一種文件系統,即proc文件系統。與其它常見的文件系統不同的是,/proc是一種僞文件系統(也即虛擬文件系統),存儲的是當前內核運行狀態的一系列特殊文件,用戶可以通過這些文件查看有關係統硬件及當前正在運行進程的信息,甚至可以通過更改其中某些文件來改變內核的運行狀態。這個目錄中包含每個進程的狀態信息。
以下參數可通過top命令查看
參數及意義
參數名 | 對應/proc路徑 | 說明 |
---|---|---|
PID列 | 爲/proc目錄下的數字目錄 | 進程ID,每個進程的PID數字做爲目錄名稱 |
USER | 爲/proc/PID/status文件中的以Uid開頭行的第一列數字 | 進程的所屬用戶 |
PR | 在/proc/PID/stat文件中第18列數值 | 任務的調度優先級 |
NI | 在/proc/PID/stat文件中第19列數值 | 表示任務的NICE值 |
VIRT | 在/proc/PID/statm文件中第1列數值(單位爲頁) | 虛擬內存大小(KiB),任務使用的虛擬內存總量。 它包括所有代碼,數據和共享庫以及已換出的頁面和已映射但未使用的頁面 |
RES | 在/proc/PID/statm文件中第2列數值(單位爲頁) | 表示駐留內存大小(KiB) ,任務正在使用的非交換物理內存 |
SHR | 在/proc/PID/statm文件中第3列數值(單位爲頁) | 表示共享內存大小(KiB),可能與其他進程共享的內存 |
S | 這行顯示的進程狀態 | 爲/proc/PID/status文件中State |
%CPU | CPU使用率,自上一次屏幕刷新以來佔用的CPU時間與總CPU時間的百分比。(通過計算得到) | |
%MEM | 內存使用(RES)任務當前使用的可用物理內存份額。(通過計算RES與總內存比率得到) | |
TIME+ | 在/proc/PID/stat文件中體現爲兩個時間之和 :第14列該任務在用戶態運行的時間 和第15列該任務在覈心態運行的時間 | 任務自啓動以來使用的總CPU時間,顯示百分之一秒的精度 |
COMMAND | /proc/#/status文件中以Name開頭的行 | 進程名 |
kernel.hostname | string | 主機名 |
net.ipv4.icmp_echo_ignore_all | 0,1 | 忽略所有ping |
3、分別用while、for循環檢測10.0.0.1/24網段存活的IP地址
while循環
1 #! /bin/bash
2
3 declare -i ip=1
4
5 while [ $ip -le 5 ]
6 do
7 ping -c 1 192.168.1."$ip" &> /dev/null
8 [ $? -eq 0 ] && echo 主機IP:192.168.1.$ip
9 let ip++
10 done
for循環
#! /bin/bash
declare -i ip
for ip in {1..254}
do
ping -c 1 192.168.1.$ip &> /dev/null
[ $? -eq 0 ] && echo "活動主機:192.168.1.$ip"
done
4、說明initrd的作用
initrd 是 boot loader initialized RAM disk的縮寫,表示由 boot loader 初始化的內存盤。在 linux內核啓動前, boot loader 會將磁盤等存儲介質中的 initrd 文件先加 載到內存,內核啓動時會先訪問該內存中的 initrd 文件系統然後才訪問真正的根文件系統。啓動過程被分爲兩個過程,第一過程是執行內存中的 initrd 文件系統中 的初始化文件(在Linux2.4 內核是/linuxrc 文件,是由文件系統鏡像生成的;在Linux2.6內核是/init文件,是使用 cpio 工具生成),負責加載內核訪問根文件系統 存儲介質的驅動模塊, 以及加載根文件系統。第二過程是執行真正的根文件系統中的 /sbin/init 進程。
initrd的主要作用:
(1)使linux 發行版適應各種不同的硬件架構
Linux發行版在內核中只編譯了基本的硬件驅動,在安裝過程中通過檢測系統硬件,生成包含安裝系統硬件
驅動的 initrd。linux 發行版必須適應各種不同的硬件架構,但又不可能把所有的驅動編譯進內核,否則內
核會變得臃腫龐大。所以Initrd成爲linux 發行版的必備部件。
(2)livecd適應複雜的硬件環境。
livecd是一種從CD光盤中直接引導出一個可用的Linux系統。這種方式面臨更爲複雜的硬件環境,也需要使
用Initrd技術
(3)usb啓動盤必備技術
因爲usb從驅動加載到設備真正可用大概需要幾秒鐘時間。如果將 usb 驅動編譯進內核,那在內核訪問 usb
設備時, usb 設備通常沒有初始化完畢。所以改爲在 initrd 中加載 usb 驅動,然後休眠幾秒中,等待 usb
設備初始化完畢後再掛載 usb 設備中的文件系統。
(4)實現個性化 bootsplash
Boot-splash通過對內核打補丁來改變linux控制檯對圖像顯示的支持,通過用戶空間程式來定製啓動logo、
設定控制檯背景和顯隱啓動時的字符信息,甚至能夠支持開機畫面的動畫顯示。在 linuxrc 腳本中可以很方
便地啓用個性化 bootsplash。