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。