Q1:列舉常見的內核參數以及參數的含義。
可用
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
Q2:如何通過/proc
查看top
中展示的進程狀態。
- PID:進程id,對應爲
/proc/#
,/proc
目錄下,以數字命名的目錄。- USER:進程屬主,
/proc/#/status
文件中,以Uid
開頭行的第一列數字。- PR:優先級。
- NI:
nice
值。- VIRT:虛擬內存集。
- RES:常駐內存集佔,
/proc/#/status
文件中以VmRSS
開頭的行。- SHR:共享內存集,
/proc/#/status
文件中以VmLib
開頭的行。- S:進程狀態,
/proc/#/status
文件中以State
開頭的行。- %CPU:佔用CPU時間百分比。
- %MEM:佔用物理內存百分比,
/proc/#/status
文件中以VmRSS
開頭的行。- TIME+:進程運行的CPU時長。
- COMMAND:進程名,
/proc/#/status
文件中以Name
開頭的行。
Q3:分別用while
,for
循環檢測10.0.0.1/24
網段存活的ip地址。
#! /usr/bin/env bash
for subfix in `seq 1 254`; do
ip=10.0.0.${subfix}
if ping -W 1 -c 1 ${ip} &> /dev/null; then
echo "${ip} is alive"
fi
done
#! /usr/bin/env bash
subfix=1
while [ ${subfix} -lt 255 ]; do
ip=10.0.0.${subfix}
if ping -W 1 -c 1 ${ip} &> /dev/null; then
echo "${ip} is alive"
fi
subfix=$[$subfix+1]
done
Q4:說明initrd
的作用。
initrd
是系統安裝完成後編譯生成的,可在內存中運行的臨時根文件系統。initrd
所在分區必須是kernel
所能驅動的格式(比如ext4
,而不是lvm
)。initrd
用於提供kernel
加載root fs
所需的驅動。因爲不可能把所有驅動都編譯進內核,所以在系統安裝完成後,將加載root fs
所需的驅動編譯進initrd
中,kernel
先加載initrd
做爲臨時root fs
,從中讀取需要的驅動,加載真正的root fs
,再切換根到真正的root fs
。