Linux学习之内核及shell脚本

列举常见内核参数及参数的意义

  • 关闭ipv6
    net.ipv6.conf.all.disable_ipv6 = 1
  • 关闭路由转发
    net.ipv4.ip_forward = 0
  • 最大限度使用物理内存
    vm.swappiness = 0
  • ARP缓存的存活时间
    net.ipv4.neigh.default.gc_stale_time = 120
  • ARP回应的级别
    net.ipv4.conf.all.arp_announce = 2
  • SYN重试次数
    net.ipv4.tcp_syn_retries = 2
  • SYNACK重试次数
    net.ipv4.tcp_synack_retries = 2
  • SYN_RECV状态队列的数量
    net.ipv4.tcp_max_syn_backlog = 65535
  • 网口接收数据包比内核处理速率快状态队列的数量
    net.core.netdev_max_backlog = 65535
  • 系统能处理的不属于任何进程的socket数量
    net.ipv4.tcp_max_orphans = 65535
  • tcp发送keepalive消息的频度
    net.ipv4.tcp_keepalive_time = 600
  • tcp发送keepalive探测确定连接已经断开的次数
    net.ipv4.tcp_keepalive_probes = 3
  • 探测消息发送的频率
    net.ipv4.tcp_keepalive_intvl = 15
  • 系统同时保持TIME_WAIT socket的数量
    net.ipv4.tcp_max_tw_buckets = 36000
  • 开启TIME-WAIT sockets重用
    net.ipv4.tcp_tw_reuse = 1
  • TCP/UDP协议允许使用的本地端口号
    net.ipv4.ip_local_port_range = 1024 65000
  • 每个端口最大的监听队列的数量
    net.core.somaxconn = 65535
  • 关闭tcp的连接传输的慢启动
    net.ipv4.tcp_slow_start_after_idle = 0
  • 关闭Magic System Request Key
    kernel.sysrq = 0

如何通过/proc查看top中展示的进程状态

使用:cat /proc/[pid]/status查看进程状态

分别用while、for循环检测10.0.0.1/24网段中存活的IP地址

  • 1、使用for循环检测
    1)、代码
#!/bin/bash
#
declare -i a=0
for a in {1..255};do
	if ping -w 2 -c 2 10.0.0.$a &>/dev/null;then
             echo "10.0.0.$a is up"
    else
              echo "10.0.0.$a is down"
     fi
done

2)、运行结果

[root@localhost shfile]# bash testping.sh
10.1.1.1 is down
10.1.1.2 is down
10.1.1.3 is down
10.1.1.4 is down
10.1.1.5 is down
10.1.1.6 is down
10.1.1.7 is down
10.1.1.8 is down
  • 2、使用while循环
    1)、代码
#!/bin/bash
#
declare -i a=0
declare -i b=0
declare -i c=0

while [ $a -le 255 ];do
      if ping -w 2 -c 2 10.0.0.$a &>/dev/null;then
          echo "10.0.0.$a is up"
      else
           echo "10.0.0.$a is down"
       fi
       let a++
done

2)、运行结果

[root@localhost shfile]# bash whileping.sh
10.0.0.0 is down
10.0.0.1 is down
10.0.0.2 is down
10.0.0.3 is down
10.0.0.4 is down
10.0.0.5 is down

说明initrd的作用

Initrd ramdisk或者initrd是指一个临时文件系统,它在启动阶段被Linux内核调用。initrd主要用于当“根”文件系统被挂载之前,进行准备工作。
同其他Unix系统一样,Linux操作系统首先要将内核引导入内存。内核驻留于操作系统与应用程序的整个活动周期,其中应用程序(软件)在“用户空间”内运行,位于内核控制之下。
为了使加载存储器最小化,一些核心 Linux 程序转化成模块形式,可以动态加载系统中。
initrd 系统中的文件在引导阶段可以被核心访问,里面的内容会被挂载成一个 loop 类型的文件,早期是将 initrd 放在小的软盘片内。initrd 通常被压缩成 gzip 类型,在引导的时候由 bootloader(LILO, GRUB) 来告知核心 initrd 的位置。不过在2.6版本内核之后出现了initramfs,它和initrd实现同样的功能,但是它基于一种cpio档,无须挂载就可以展开成一个文件系统,因此省去了各种相关的权限,在自动化方面更方便了。

猜你喜欢

转载自blog.csdn.net/qq_29954175/article/details/85843205