week 8

1.列舉常見的內核參數以及參數的意義

kernel.參數

#禁用SysRq(組合鍵)功能
kernel.sysrq = 0                            

#控制core文件的文件名中是否添加pid作爲擴展。文件內容爲1,表示添加pid作爲擴展名,生成的core文件格式爲core.xxxx;爲0則表示生成的core文件同一命名爲core
kernel.core_uses_pid = 1

#每個消息隊列的最大字節限制。該文件指定一個消息隊列的最大長度
kernel.msgmnb = 65536

#整個系統的最大數量的消息隊列。該文件指定消息隊列標識的最大數目,即系統範圍內最大多少個消息隊列
kernel.msgmax = 65536

#定義單個共享內存段的最大值
kernel.shmmax = 68719476736

#控制共享內存頁數,Linux 共享內存頁大小爲4KB, 共享內存段的大小都是共享內存頁大小的整數倍。一個共享內存段的最大大小是16G,那麼需要共享內存頁數是 16GB/4KB=16777216KB/4KB=4194304
kernel.shmall = 4294967296

#整個系統共享內存段的最大數目
kernel.shmmni = 4096

# 每個信號對象集的最大信號對象數;系統範圍內最大信號對象數;每個信號對象支持的最大操作數;系統範圍內最大信號對象集數
kernel.sem = 250 32000 100 128

2.如何通過/proc查看top中展示的進程狀態

先用top命令查看進程信息

top - 03:28:40 up  8:01,  2 users,  load average: 0.00, 0.00, 0.00
Tasks: 114 total,   1 running, 113 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1906492k total,   343232k used,  1563260k free,   103668k buffers
Swap:  2097148k total,        0k used,  2097148k free,    80088k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  8687 root      20   0 15036 1208  928 R  0.3  0.1   0:00.20 top
     1 root      20   0 19356 1532 1224 S  0.0  0.1   0:04.18 init
     2 root      20   0     0    0    0 S  0.0  0.0   0:00.02 kthreadd
     3 root      RT   0     0    0    0 S  0.0  0.0   0:00.37 migration/0
     4 root      20   0     0    0    0 S  0.0  0.0   0:00.11 ksoftirqd/0

PID :進程ID
USER :進程所有者
PR :進程的優先級別,越小越優先被執行
NI :nice值.負值表示高優先級,正值表示低優先級
VIRT :進程佔用的虛擬內存
RES :進程佔用的物理內存
SHR :進程使用的共享內存
S :進程的狀態。S表示休眠,R表示正在運行,Z表示僵死狀態,D表示不可中斷的睡眠狀態,T表示跟蹤/停止
%CPU :進程佔用CPU的使用率
%MEM :進程使用的物理內存和總內存的百分比
TIME+ :該進程啓動後佔用的總的CPU時間,即佔用CPU使用時間的累加值。
COMMAND :進程啓動命令行

使用:cat /proc/[pid]/status查看進程狀態

[root@test script]# cat /proc/1/status
Name:   init
State:  S (sleeping)
Tgid:   1
Pid:    1
PPid:   0
TracerPid:  0
Uid:    0   0   0   0
Gid:    0   0   0   0
Utrace: 0
FDSize: 64
Groups:
VmPeak:    19364 kB
VmSize:    19356 kB
VmLck:         0 kB
VmHWM:      1532 kB
VmRSS:      1532 kB
VmData:      324 kB
VmStk:        88 kB
VmExe:       140 kB
VmLib:      2348 kB
VmPTE:        56 kB
VmSwap:        0 kB
Threads:    1
SigQ:   1/14719
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001000
SigCgt: 00000001a0016623
CapInh: 0000000000000000
CapPrm: ffffffffffffffff
CapEff: fffffffffffffeff
CapBnd: ffffffffffffffff
Cpus_allowed:   ffffffff,ffffffff,ffffffff,ffffffff
Cpus_allowed_list:  0-127
Mems_allowed:   00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
Mems_allowed_list:  0
voluntary_ctxt_switches:    1005
nonvoluntary_ctxt_switches: 142

Name:   進程名稱
State:  進程狀態,R (running), S (sleeping), D (disk sleep), T (stopped), T(tracing stop), Z (zombie), or X (dead)
Tgid:   線程組號 
Pid:    進程ID 
Ppid:   父進程ID 
TracerPid: 接收跟蹤該進程信息的進程的ID號,如果是0,表示沒有跟蹤
Uid:    Uid euid suid fsuid 
Gid:    Gid egid sgid fsgid 
    第一列數字(RUID):實際用戶ID,指的是進程執行者是誰.
    第二列數字(EUID):有效用戶ID,指進程執行時對文件的訪問權限.
    第三列數字(SUID):保存設置用戶ID,作爲effective user ID的副本,在執行exec調用時後能重新恢復原來的effectiv user ID.
    第四列數字(FSUID):目前進程的文件系統的用戶識別碼.一般情況下,文件系統的用戶識別碼(fsuid)與有效的用戶識別碼(euid)是相同的.

FDSize: 當前分配文件描述符
Groups: 啓動這個進程用戶所在的組
VmPeak: 當前進程運行過程中佔用內存的峯值
VmSize(KB): 進程佔用的內存
VmLck(KB): 任務已經鎖住的物理內存的大小。鎖住的物理內存不能交換到硬盤
VmHWM(KB): 程序得到分配到物理內存的峯值
VmRSS(KB): 應用程序正在使用的物理內存的大小,就是用ps命令的參數rss的值 (rss) 
VmData(KB): 程序數據段的大小(所佔虛擬內存的大小),存放初始化了的數據;
VmStk(KB): 任務在用戶態的棧的大小 
VmExe(KB): 進程代碼的大小
VmLib(KB): 進程所使用lib庫的大小
VmPTE: 該進程的所有頁表的大小,單位:kb 
Threads: 當前進程組有多少個線程
SigQ: 待處理信號的個數 
SigPnd: 屏蔽位,存儲了該線程的待處理信號 
ShdPnd: 屏蔽位,存儲了該線程組的待處理信號 
SigBlk: 存放被阻塞的信號 
SigIgn: 存放被忽略的信號 
SigCgt: 存放被俘獲到的信號 
CapInh Inheritable,能被當前進程執行的程序的繼承的能力 
CapPrm Permitted,進程能夠使用的能力,可以包含CapEff中沒有的能力,這些能力是被進程自己臨時放棄的,CapEff是CapPrm的一個子集,進程放棄沒有必要的能力有利於提高安全性 
CapEff Effective,進程的有效能力 
voluntary_ctxt_switches表示進程主動切換的次數.
nonvoluntary_ctxt_switches表示進程被動切換的次數.

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

#!/bin/bash
###while方式
i=1
while [ $i -le 254 ];do
   if ping -w 1 -c 1 10.0.0.$i >/dev/null ;then
       echo "10.0.0.$i 存活"
   else
       echo "10.0.0.$i 離線"
   fi
   let i++
done

###for方式
for i in $(seq 1 254);do
    if ping -w 1 10.0.0.$i > /dev/null;then
        echo "10.0.0.$i 存活"
    else
        echo "10.0.0.$i 離線"
    fi
done

4.說明initrd的作用

Initrd 的英文含義是initialized RAM disk,即初始化RAM磁盤,是在系統引導過程中掛載的一個臨時根文件系統,用來支持兩階段的引導過程。initrd文件中包含了各種可執行程序和驅動程序,它們可以用來掛載實際的根文件系統,然後再將這個 initrd RAM磁盤卸載,並釋放內存。

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