第七周

1、列举常见的内核参数以及参数的意义

net.ipv4.ip_forward : 是否开启数据包转发

net.ipv4.conf.default.rp_filter : 对从默认网卡进来的数据包进行反向路径校验

net.ipv4.conf.default.accept_source_route : 是否接受含有源路由信息的ip包

net.ipv4.tcp_max_tw_buckets : 处于time_wait状态的最大数值,超过则立刻被清除

net.ipv4.tcp_tw_recycle:是否启用timewait快速回收。 

net.ipv4.tcp_tw_reuse :是否允许将TIME-WAIT sockets重新用于新的TCP连接。

net.ipv4.ip_local_port_range : 对外连接端口范围

kernel.hostname : 主机名

net.ipv4.icmp_echo_ignore_all : 忽略所有ping

2、如何通过/proc查看top中展示的进程状态

top中展示的列分别是有pid、user、pr、ni、virt、res、shr、s、%cpu、%mem、time+、command

pid      user    pr ni       virt        res       shr    s %cpu   %mem   time+     command

7812 ouyang 20 0 3535960 196388 72292 S   7.0     12.0      0:37.29   gnome-she

假定查看7812进程信息:

/proc/7812 目录                      对应是pid--7812

cat /proc/7812/status             输出的UID对应的是user信息

cat /proc/7812/stat                 第18列对应是pr信息

cat /proc/7812/stat                 第19列对应是ni信息

cat /proc/7812/status             输出的VmSize项对应的是virt信息

cat /proc/7812/status             输出的VmRSS项对应的是res信息

cat /proc/7812/status             输出的VmRSS项的值减去RssAnon的值对应的是shr信息

cat /proc/7812/status             输出的State项对应的是s信息

%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比

%MEM:进程使用的可用物理内存百分比

TIME+:任务启动后到现在所使用的总时间

cat /proc/7812/comm  的name项 或 cat /proc/7812/status 输出的结果       对应是command的内容

3、分别用while、for循环检测10.0.0.1/24网段存活的IP地址

for循环:

#!/bin/bash

ip=10.0.0

for i in {1..254};do

  ping -c 1 -w 1 $ip.$i &> /dev/null

  if [ "$?" -eq 0 ];then     

      echo "$ip.$i is online."

  else

      echo "$ip.$i is offline." &> /dev/null

  fi

done

while循环:

#!/bin/bash

i=1

while [ ${i} -le 254 ]

do

{

        {

              ping -w 1 -c 1 10.0.0.${i}  &> /dev/null

              if [ $? -eq 0 ];then

                  echo "10.0.0.${i} online"

              else 

                  echo "10.0.0.${i} offline" &> /dev/null

              fi

        }

  let ip++

}

done

4、说明initrd的作用

initrd的英文含义是boot loader initialized RAM disk,即由引导程序初始化的RAM磁盘。initrd是在实际根文件系统可用之前挂载到系统中的一个初始根文件系统。initrd与内核绑定在一起,并作为内核引导过程的一部分进行加载。内核然后会将这个initrd文件作为其阶段引导过程的一部分来加载模块,这样才能在以后的引导过程中使用真正的文件系统,并挂载实际的根文件系统。根文件系统可以存储在包括IDE、SCSI、USB在内的多种介质上,如果将这些设备的驱动都编译进内核,可以想象内核会多么庞大、臃肿。所以可以把initrd看做是在启动过程中连接内核与根文件系统的一个桥梁。

initrd中包含了实现这个目标所需要的目录和可执行程序的最小集合。Initrd的用途主要有以下四种: 

1. linux发行版的必备部件。linux发行版必须适应各种不同的硬件架构,将所有的驱动编译进内核是不现实的,initrd技术是解决该问题的关键技术。Linux发行版在内核中只编译了基本的硬件驱动,在安装过程中通过检测系统硬件,生成包含安装系统硬件驱动的initrd,是一种即可行又灵活的解决方案。

2. livecd的必备部件同linux发行版相比,livecd可能会面对更加复杂的硬件环境,所以也必须使用 initrd。

3. 制作Linux usb启动盘必须使用initrd。usb设备是启动比较慢的设备,从驱动加载到设备真正可用大概需要几秒钟时间。如果将usb驱动编译进内核,内核通常不能成功访问usb设备中的文件系统。因为在内核访问usb设备时,usb设备通常没有初始化完毕。所以常规的做法是,在initrd中加载usb驱动,然后休眠几秒中,等待usb设备初始化完毕后再挂载usb设备中的文件系统。

4. 嵌入式开发中常用做永久根文件系统。

5. 在linuxrc脚本中可以很方便地启用个性化bootsplash。

你可能感兴趣的:(第七周)