第七周作业
1、内核参数
内核参数可使用sysctl -a进行查看,默认配置文件为/etc/sysctl.conf
常见参数
参数名 | 取值 | 说明 |
---|---|---|
net.ipv4.ip_forward | 0,1 | 是否开启数据包转发 |
net.ipv4.icmp_echo_ignore_all | 0,1 | 忽略所有ping |
net.ipv4.conf.default.rp_filter = 1 | 0,1 | 是否开启反向路径检查 |
kernel.hostname | string | 主机名 |
net.ipv4.ip_local_port_range | start end | TCP/UDP协议允许使用的本地端口号 |
修改内核参数
- 编辑/etc/sysctl.conf配置文件,使用sysctl -p重新装载配置文件
- 使用echo命令输出字符到指定位置进行修改,如echo 1 > /proc/sys/net/ipv4/ip_forward
2、top
如何通过/proc查看top中展示的进程状态
top - 16:13:54 up 5:33, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1863248 total, 1576340 free, 103028 used, 183880 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1569636 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 128108 6564 4132 S 0.0 0.4 0:01.67 systemd
字段对应关系
- cat /proc/[pid]/stat
- cat /proc/[pid]/status
top | /proc |
---|---|
PID:进程ID | /proc/#或/proc/#/stat文件中第1个字段内容 |
USER:进程属主 | /proc/#/status文件中,以Uid开头行的第一列数字 |
PR:优先级 | /proc/#/stat文件中第18个字段内容 |
NI:nice值 | /proc/#/stat文件中第19个字段内容 |
VIRT:虚拟内存集 | /proc/#/status文件中以VmSize开头的行 |
RES:常驻内存集 | /proc/#/status文件中以VmRSS开头的行 |
SHR:共享内存集 | /proc/#/status文件中以RssFile开头的行 |
S:进程状态 | /proc/#/status文件中以State开头的行或/proc/#/stat文件中第3个字段内容 |
%CPU:占用CPU时间百分比 | |
%MEM:占用物理内存百分比 | |
TIME+:进行运行的CPU时长 | |
COMMAND:进程名 | /proc/#/cmdline文件中的内容 |
3、bash脚本
- 使用while循环检测10.0.0.1/24网段存活的IP地址
#!/bin/bash
declare -i IP=0
trap 'mytrap' INT
mytrap() {
echo "Quit"
exit 1
}
while true; do
let IP++
if [ $IP -le 255 ]; then
ping -c 1 -w 1 10.0.0.$IP &>/dev/null && echo 10.0.0.$IP is up || echo 10.0.0.$IP is down
else
declare -i IP=0
fi
done
- 使用for循环检测10.0.0.1/24网段存活的IP地址
#!/bin/bash
trap 'mytrap' INT
mytrap() {
echo "Quit"
exit 1
}
for ((;;IP++)); do
if [ $IP -le 255 ]; then
ping -c 1 -w 1 10.0.0.$IP &>/dev/null && echo 10.0.0.$IP is up || echo 10.0.0.$IP is down
else
declare -i IP=0
fi
done
4、initrd的作用
initrd是系统安装完成后编译生成的,可在内存中运行的临时根文件系统。
initrd所在分区必须是kernel所能驱动的格式(比如xfs,而不是lvm)。
initrd用于提供kernel加载root fs所需的驱动。因为不可能把所有驱动都编译进内核,所以在系统安装完成后,将加载root fs所需的驱动编译进initrd中,kernel先加载initrd做为临时root fs,从中读取需要的驱动,加载真正的root fs,再切换根到真正的root fs。
转载于:https://blog.51cto.com/zengshao/2389358