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.挂载系统中真正的 /


猜你喜欢

转载自blog.51cto.com/12686444/2337239