內核參數、top命令、腳本練習、initrd簡介

內核參數、top命令、腳本練習、initrd簡介

  1. 列舉常見的內核參數以及參數的意義
    (1)net.ipv4.ip_forward:數據包的路由轉發開關,設置爲1表示開啓,0表示關閉
    (2)net.ipv4.conf.default.rp_filter對從默認網卡進來的數據包進行反向路徑校驗,設置爲1表示開啓,0表示關閉
    (3)net.ipv4.conf.default.accept_source_route是否接受含有源路由信息的ip包,設置爲1表示開啓,0表示關閉
    (4)net.ipv4.icmp_echo_ignore_all:忽略所有外部來的ping請求,但不影響自己對外外的ping操作。設置爲1表示關閉ICMP迴應功能,設置0表示開啓ICMP迴應功能。
    (5)kernel.hostname:主機名的內核參數
    (6)net.ipv4.tcp_max_tw_buckets:設置TCP最大的timewait數量。默認是180000
    (7)net.ipv4.ip_local_port_range :允許系統打開的端口範圍,值爲兩個數字,中間以空格隔開,分別表示最小端口號和最大端口號。
    (8)net.ipv4.tcp_tw_recycle:啓用timewait快速回收。設置爲1表示啓用功能。

    補充:
    (1)以上所有的參數分別在 /proc/sys/#/* 每個對應的目錄下:
    例如: net.ipv4.ip_forward = /proc/sys/net/ipv4/ip_forward
    (2)修改參數的值,專用命令sysctl ,或者可以使用echo重定向的方式

    例如:~]# echo "test.localhost " > /proc/sys/kernel/hostname 
               ~]#sysctl  -w net.ipv4.ip_forward=1

    注意:以上修改方式都只對當前有效,如果想永久有效需要修改配置文件:

    /etc/sysctl.conf 或者/etc/sysctl.d/*.conf 
    立即生效的方式:sysctl -p /PATH/TO/CONFIG.FILE
  2. 通過/proc查看top中展示的進程狀態
    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開頭的行 進程名

3.分別用while、for循環檢測10.0.0.1/24網段存活的IP地址:
(1)for:

#!/bin/bash
#
declare -i uphosts=0
declare -i downhosts=0
for i in {1..254};do
    if ping -W 1 -c 1 10.0.0.${i} %> /dev/null; then
        echo " 10.0.0.$i is ip."
        let uphosts+=1
    else
        echo "10.0.0.$i is down."
        let downhosts+=1
    fi
done
echo "Up hosts: $uphosts, Down hosts: $downhosts."                                                   

(2)while

#!/bin/bash

declare -i uphosts=0
declare -i downhosts=0
declare -i i=1
hostping(){
    if ping -W 1 -c 1 $1 &> /dev/null;then
        echo "$1 is up."
        return 0
    else
         echo "$1 is down."
         return 1
    fi
}
while [ $i -le 254 ];do
    hostping 10.0.0.$i
    [ $? -eq 0 ] && let uphosts++ || let downhosts++
    let i++
done
echo "Up hosts: $uphosts ,Down hosts:$downhosts"

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.內核啓動時加載 initrd img, 掛載根 /
2.以/linuxrc 的指令執行, 一般有掃描系統硬件,從 當前文件系統中找到驅動安裝之.
3.掛載系統中真正的根 /
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章