1. 程式人生 > >Linux基礎之核心及程序

Linux基礎之核心及程序

1、 列舉常見的核心引數以及引數的意義

檢視物理CPU個數
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

檢視每個物理CPU中core的個數(即核數)
cat /proc/cpuinfo| grep "cpu cores"| uniq

檢視邏輯CPU的個數
cat /proc/cpuinfo| grep "processor"| wc -l

檢視系統版本
~]# cat /etc/redhat-release

檢視核心版本
~]# uname –r

檢視所有資訊
~]# uname –a

檢視IP
~]# /sbin/ifconfig eth0 | grep 'inet addr'

檢視DNS
~]# cat /etc/resolv.conf

2、 如何通過/proc檢視top中展示的程序狀態

pid/stat包含了程序所有CPU活躍的資訊,該檔案中的所有值都是從系統啟動開始累計到當前時刻。

/proc/1 # cat stat

1 (linuxrc) S 0 0 0 0 -1 8388864 50 633 20 4 2 357 72 342 16 0 1 0 22 2252800 70 4294967295 32768 1879936 3199270704 3199269552 1113432 0 0 0 674311 3221479524 0 0 0 0 0 0

 

每個引數意思為:

引數 解釋

pid=1 程序(包括輕量級程序,即執行緒)號

comm= linuxrc 應用程式或命令的名字

task_state=S 任務的狀態,R:runnign, S:sleeping (TASK_INTERRUPTIBLE), D:disk sleep (TASK_UNINTERRUPTIBLE), T: stopped, T:tracing stop,Z:zombie, X:dead

ppid=0 父程序ID

pgid=0 執行緒組號

sid=0 c該任務所在的會話組ID

tty_nr=0(pts/3) 該任務的tty終端的裝置號,INT(0/256)=主裝置號,(0-主裝置號)=次裝置號

tty_pgrp=-1 終端的程序組號,當前執行在該任務所在終端的前臺任務(包括shell 應用程式)的PID。

task->flags=8388864程序標誌位,檢視該任務的特性

min_flt=50該任務不需要從硬碟拷資料而發生的缺頁(次缺頁)的次數

cmin_flt=633 累計的該任務的所有的waited-for程序曾經發生的次缺頁的次數目

maj_flt=20該任務需要從硬碟拷資料而發生的缺頁(主缺頁)的次數

cmaj_flt=4 累計的該任務的所有的waited-for程序曾經發生的主缺頁的次數目

utime=2 該任務在使用者態執行的時間,單位為jiffies

stime=357 該任務在核心態執行的時間,單位為jiffies

cutime=72 累計的該任務的所有的waited-for程序曾經在使用者態執行的時間,單位為jiffies

cstime=342 累計的該任務的所有的waited-for程序曾經在核心態執行的時間,單位為jiffies

priority=16 任務的動態優先順序

nice=0 任務的靜態優先順序

num_threads=1 該任務所在的執行緒組裡執行緒的個數

it_real_value=0 由於計時間隔導致的下一個 SIGALRM 傳送程序的時延,以 jiffy 為單位.

start_time=22 該任務啟動的時間,單位為jiffies

vsize=2252800(bytes) 該任務的虛擬地址空間大小

rss=70(page) 該任務當前駐留實體地址空間的大小

Number of pages the process has in real memory,minu 3 for administrative purpose.

這些頁可能用於程式碼,資料和棧。

rlim=4294967295=0xFFFFFFFF(bytes) 該任務能駐留實體地址空間的最大值

start_code=32768=0x8000  該任務在虛擬地址空間的程式碼段的起始地址(由聯結器決定)

end_code=1879936該任務在虛擬地址空間的程式碼段的結束地址

start_stack=3199270704=0Xbeb0ff30該任務在虛擬地址空間的棧的開始地址

kstkesp=3199269552  sp(32 位堆疊指標) 的當前值, 與在程序的核心堆疊頁得到的一致.

kstkeip=1113432 =0X10FD58 指向將要執行的指令的指標, PC(32 位指令指標)的當前值.

pendingsig=0 待處理訊號的點陣圖,記錄傳送給程序的普通訊號

block_sig=0 阻塞訊號的點陣圖

sigign=0 忽略的訊號的點陣圖

sigcatch=674311被俘獲的訊號的點陣圖

wchan=3221479524  如果該程序是睡眠狀態,該值給出排程的呼叫點

nswap=0 被swapped的頁數

cnswap=0 所有子程序被swapped的頁數的和

exit_signal=0  該程序結束時,向父程序所傳送的訊號

task_cpu(task)=0 執行在哪個CPU上

task_rt_priority=0 實時程序的相對優先級別

task_policy=0 程序的排程策略,0=非實時程序,1=FIFO實時程序;2=RR實時程序

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

#!/bin/bash
for ip in seq 1 255
do
{
ping -c 1 10.0.0.$ip > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo 10.0.0.$ip UP
else
echo 10.0.0.$ip DOWN
fi
}&
done
-----------------------------
#!/bin/bash
for ip in seq 1 255
do
{
ping -c 1 10.0.0.$ip > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo 10.0.0.$ip UP
else
echo 10.0.0.$ip DOWN
fi
}&
done


declare -i ip=1
while [ $ip -le 255 ]; do
    ping -c 1 10.0.0.$ip > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo 10.0.0.$ip UP
    else
        echo 10.0.0.$ip DOWN
    fi
    let ip++
done

4、 說明initrd的作用

initrd 是一個 ram disk 的 image. 一般是壓縮過的.它存在的主要目的是在核心啟動時載入它,安裝其中的驅動.
總的來說分這幾步
a.核心啟動時載入 initrd img, mount 為 / 
b.依 /linuxrc 的指令執行, 一般有掃描系統硬體,從 當前檔案系統中找到驅動安裝之.
c.掛載系統中真正的 /