第 7 周
1、列举常见的内核参数以及参数的意义
可用sysctl -a
查看所有内核参数及其值。
- 常见参数
参数名 | 取值 | 说明 |
---|---|---|
net.ipv4.ip_forward | 0,1 | 是否开启数据包转发 |
net.ipv4.conf.default.rp_filter | 0,1 | 对从默认网卡进来的数据包进行反向路径校验 |
net.ipv4.conf.default.accept_source_route | 0,1 | 是否接受含有源路由信息的ip包 |
net.ipv4.tcp_max_tw_buckets | size | 处于time_wait状态的最大数值,超过则立刻被清除 |
net.ipv4.ip_local_port_range | start end | 对外连接端口范围 |
net.ipv4.tcp_max_syn_backlog | size | SYN队列的长度 |
fs.file-max | size | 系统打开的最大文件句柄数 |
kernel.hostname | string | 主机名 |
net.ipv4.icmp_echo_ignore_all | 0,1 | 忽略所有ping |
2、如何通过/proc查看top中展示的进程状态
- PID:进程id,对应为
/proc/#
,/proc
目录下,以数字命名的目录。 - USER:进程属主,
/proc/#/status
文件中,以Uid
开头行的第一列数字。 - PR:优先级。
- NI:
nice
值。 - VIRT:虚拟内存集。
- RES:常驻内存集占,
/proc/#/status
文件中以VmRSS
开头的行。 - SHR:共享内存集,
/proc/#/status
文件中以VmLib
开头的行。 - S:进程状态,
/proc/#/status
文件中以State
开头的行。 - %CPU:占用CPU时间百分比。
- %MEM:占用物理内存百分比,
/proc/#/status
文件中以VmRSS
开头的行。 - TIME+:进程运行的CPU时长。
- COMMAND:进程名,
/proc/#/status
文件中以Name
开头的行。
3、分别用while、for循环检测10.0.0.1/24网段存活的IP地址
cat ping1.sh
#!/bin/bash
#文件名:ping1.sh
#测试网段存活主机
for ip in 10.0.0.{1..255};
do
(
ping $ip -c 2 &> /dev/null;
if [ $? -eq 0 ];
then
echo $ip is alive
fi
)&
done
wait
cat ping2.sh
#!/bin/bash
#文件名:ping2.sh
#测试网段存活主机
a=1
while [ ${a} -lt 255 ]; do
ip=10.0.0.${a}
if ping -c 2 ${ip} &> /dev/null; then
echo "${ip} is alive"
fi
a=$[$a+1]
done
4、说明initrd的作用
initrd
是系统安装完成后编译生成的,可在内存中运行的临时根文件系统。
initrd
所在分区必须是kernel
所能驱动的格式(比如ext4
,而不是lvm
)。
initrd
用于提供kernel
加载root fs
所需的驱动。因为不可能把所有驱动都编译进内核,所以在系统安装完成后,将加载root fs
所需的驱动编译进initrd
中,kernel
先加载initrd
做为临时root fs
,从中读取需要的驱动,加载真正的root fs
,再切换根到真正的root fs
。