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学习记录的主要内容,如果未能解决你的问题,请参考以下文章

学习记录linux中问题解决方法记录

linux学习记录

linux学习记录

Linux学习记录:Makefile

linux学习记录:shell脚本

linux学习记录:shell脚本