linux学习记录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux学习记录相关的知识,希望对你有一定的参考价值。
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
以上是关于linux学习记录的主要内容,如果未能解决你的问题,请参考以下文章