1、列举常见的内核参数以及参数的意义
内核把自己的大部分参数输出到/proc/sys目录中
通过查看或修改对应的文件来查看或修改内核参数,而且修改的内核参数是即时生效的。但是这种修改内核参数的方法在下次开机后将会还原参数设置。
要永久保持内核参数值,需要将参数设置写入/etc/sysctl.conf 文件中。注意设置参数的格式,比如/proc/sys/net/ipv4/ip_forward这个参数值设置为1的写法是 net.ipv4.ip_forward = 1。
常见的参数 默认值 参数的含义
net.ipv4.ip_forward 0 用于是否开启IP转发功能
net.ipv4.icmp_echo_ignore_all 0 用于是否开启禁止ping入的功能
vm.drop_caches 0 用于清理缓存的,就是free命令看到的cache/buffer项。1 清空page 2… 3 清空所有缓存
和启动相关的内核参数,文件是 /proc/cmdline
cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.10.0-957.el7.x86_64 root=UUID=f544bfb5-0c16-49e7-834b-a105ad67b2da ro rhgb quiet
修改启动的内核参数在 /etc/default/grub 文件中GRUB_CMDLINE_LINUX 行修改。
参数还可以在 /usr/share/doc/kernel-doc-3.10.0/Documentation/kernel-parameters.txt 文档中查看,需要安装对应的包。
常见的参数 参数的含义
rhgb 开启开机启动动画,删除这个参数开机将没有动画,而是输出诊断信息
quiet 不显示内核的诊断信息
net.ifnames=0 网卡的命名方式使用传统方式命名
selinux=0 关闭selinux
2、如何通过/proc查看top中展示的进程状态
top命令展示的进程状态有
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14793 root 20 0 58428 2232 1476 R 6.2 0.2 0:00.05 top
1 root 20 0 193804 6924 4144 S 0.0 0.7 0:06.93 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
通过查看 /proc/[pid]/status 文件内容
能够查看的进程状态 PID、USER、VIRT、RES、S、COMMAND
对应的status行pid、uid、vmSize、VMRSS、State、Name
cat /proc/1/status
Name: systemd
Umask: 0000
State: S (sleeping)
Tgid: 1
Ngid: 0
Pid: 1
PPid: 0
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 64
Groups:
VmPeak: 259340 kB
VmSize: 193804 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 6928 kB
VmRSS: 6924 kB
......
进程的优先级是查看 /proc/[pid]/oom_adj 文件
cat /proc/1/oom_adj
至于CPU占有率是要通过复杂的计算得到
3、分别用while、for循环检测10.0.0.1/24网段存活的IP地址
方法一:
#!/bin/bash if [[ $@ != '1' ]] ;then echo "please input a IP" exit fi net=$(echo $1 | grep -oE '^.+.') declare -i i=2 declare -i sumup=0 declare -i sumdown=0 while ((i>1&&i<254));do ip=${net}$i if ping -n -c1 $ip &>/dev/null;then echo "the host $ip is up." let sumup++ else echo "the host $ip is down." let sumdown++ fi let i++ done echo "the sum of up host is $sumup" echo "the sum of down host is $sumdown" unset net unset ip unset i unset sumup unset sumdown
方法二:
#!/bin/bash if [[ $@ != '1' ]] ;then echo "please input a IP" exit fi net=$(echo $1 | grep -oE '^.+.') declare -i i=2 declare -i sumup=0 declare -i sumdown=0 for (( i=1; i<254; i++ ));do ip=${net}$i if ping -n -c1 $ip &>/dev/null;then echo "the host $ip is up." let sumup++ else echo "the host $ip is down." let sumdown++ fi let i++ done echo "the sum of up host is $sumup" echo "the sum of down host is $sumdown" unset net unset ip unset i unset sumup unset sumdown
4、说明initrd的作用
initrd 是一个cpio镜像,包含了一个最小的linux系统。用来解决在挂在根分区前要先加载支持根分区的文件系统模块,但是这个模块又要先挂载根分区才能访问的问题,initrd镜像包含了需要的各种模块。
使用命令 生成本机的initrd镜像
mkinitrd /boot/initramfs-3.10.0-862.el7.x86_64.img 3.10.0-862.el7.x86_64
查看镜像的内容
cpio -tv < initramfs-3.10.0-957.el7.x86_64.img