1. 常见内核参数

  1. 内核参数一般在/proc/sys 目录中

  2. 临时改变某个系统参数的值,可以用两种方法来实现,如

    1. echo 1 > /proc/sys/net/ipv4/ip_forward

    2. sysctl -w net.ipv4.ip_forward=1 以上两种方法都可能立即开启路由转发功能,但如果系统重启,或者重启网络所设置的值即会丢失,

  3. 永久保留配置,可以修改/etc/sysctl.conf文件 net.ipv4.ip_forward=0改为net.ipv4.ip_forward=1

  4. sysctl命令的作用
    -w 用此选项来改变一个sysctl设置 sysctl -w net.ipv4.ip_forward=1
    -p 载入sysctl配置文件 -p后未指定路径,则载入 /etc/sysctl.conf

  5. 常用参数(0表示关闭,1表示开启)

  6. net.ipv4.tcp_syncookies = 1 默认1 是否打开SYN Cookie功能,该功能可以防止部分SYN***

  7. net.ipv4.ip_local_port_range= 1024 65535 默认32768 60999 可用端口的范围 修改成1024 65535 可提高并发连接数量

  8. net.ipv4.tcp_fin_timeout =30 默认60 tcp超时时间

  9. net.ipv4.tcp_timestamps = 1 默认1 TCP时间戳 服务器开启,客户端可关闭

  10. net.ipv4.tcp_tw_recycle = 0 默认0 快速回收处于TIME_WAIT状态的socket,建议关闭

  11. net.ipv4.tcp_tw_reuse = 1 默认0 针对TIME-WAIT,做为客户端可以启用

  12. net.ipv4.tcp_max_tw_buckets = 262144 默认262144 针对TIME-WAIT,配置其上限

  13. net.ipv4.tcp_max_orphans = 3276800 默认16384 orphans的最大值

  14. net.ipv4.tcp_max_syn_backlog = 819200 默认128 增大SYN队列的长度,容纳更多连接

  15. net.ipv4.tcp_keepalive_intvl = 30 默认75 探测失败后,间隔几秒后重新探测

  16. net.ipv4.tcp_keepalive_probes = 3 默认9 探测失败后,最多尝试探测几次

  17. net.ipv4.tcp_keepalive_time = 1200 默认7200 间隔多久发送1次keepalive探测包

  18. net.netfilter.nf_conntrack_tcp_timeout_established = 600 默认432000 设置 conntrack tcp 状态的超时时间,如果系统出现下述异常时要考虑调整:ping: sendmsg: Operation not permitted kernel: nf_conntrack: table full, dropping packet.

  19. net.netfilter.nf_conntrack_max = 655350 默认65535 设置 conntrack 的上限,如果系统出现下述异常时要考虑调整: ping: sendmsg: Operation not permitted kernel: nf_conntrack: table full, dropping packet.

  20. net.core.netdev_max_backlog = 500000 默认1000 网卡设备将请求放入队列的长度

  21. net.core.somaxconn = 65536 默认128 已经成功建立连接的套接字将要进入队列的长度

  22. net.core.rmem_default = 8388608 默认值:212992 默认的TCP数据接收窗口大小(字节)

  23. net.core.wmem_default = 8388608 默认值:212992 默认的TCP数据发送窗口大小(字节)

  24. net.core.rmem_max = 16777216 默认值:212992 最大的TCP数据接收窗口大小(字节)

  25. net.core.wmem_max = 16777216 默认值:212992 最大的TCP数据发送窗口大小(字节)

  26. net.ipv4.tcp_mem = 94500000 915000000 927000000 默认值:94389 125854 188778 内存使用的下限 警戒值 上限

  27. net.ipv4.tcp_rmem = 4096 87380 16777216 默认值:4096 87380 6291456 socket接收缓冲区内存使用的下限 警戒值 上限

  28. net.ipv4.tcp_wmem = 4096 16384 16777216 默认值:4096 16384 4194304 socket发送缓冲区内存使用的下限 警戒值 上限

  29. net.ipv4.tcp_thin_dupack = 1 默认值:0 收到dupACK时要去检查tcp stream是不是 thin ( less than 4 packets in flight)

  30. net.ipv4.tcp_thin_linear_timeouts = 1 默认值:0 重传超时后要去检查tcp stream是不是 thin ( less than 4 packets in flight)

  31. net.unix.max_dgram_qlen = 30000 默认值:10 UDP队列里数据报的最大个数

  32. kernel.randomize_va_space = 1 默认值:2 内核的随机地址保护模式

  33. kernel.panic = 1 默认值:0 内核panic时,1秒后自动重启

  34. kernel.core_pattern = core_%e 默认值:|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e 程序生成core时的文件名格式

  35. kernel.sysrq = 0 默认值:0 是否启用sysrq功能

  36. vm.min_free_kbytes=901120 默认值:8039 保留内存的最低值

  37. vm.panic_on_oom=1 默认值:0 发生oom时,自动转换为panic

  38. vm.min_free_kbytes=1048576 默认值:45056 保留最低可用内存

  39. vm.swappiness=20 默认值:60 数值(0-100)越高,越可能发生swap交换

  40. fs.inotify.max_user_watches=8192000 默认值:8192 inotify的watch数量

  41. fs.aio-max-nr=1048576 默认值:65536 aio最大值

  42. fs.file-max = 1048575 默认值:98529 文件描述符的最大值

(针对lvs,关闭网卡LRO/GRO功能
ethtool -k eth0 查看LRO/GRO当前是否打开 ethtool -K eth0 lro off 关闭GRO ethtool -K eth0 gro off 关闭GRO)


2.通过/proc查看top的进程状态

进程运行时会生成目录/proc/PID,里面记录进程详细状态,每个进程生成一个以pid为名的文件夹 [root@centos7 sudoers.d]#ll /proc/1 total 0 dr-xr-xr-x 2 root root 0 Dec 25 18:37 attr -rw-r--r-- 1 root root 0 Dec 25 18:37 autogroup -r-------- 1 root root 0 Dec 25 18:37 auxv -r--r--r-- 1 root root 0 Dec 17 22:17 cgroup --w------- 1 root root 0 Dec 25 18:37 clear_refs -r--r--r-- 1 root root 0 Dec 17 22:17 cmdline -rw-r--r-- 1 root root 0 Dec 17 22:17 comm -rw-r--r-- 1 root root 0 Dec 25 18:37 coredump_filter -r--r--r-- 1 root root 0 Dec 25 18:37 cpuset lrwxrwxrwx 1 root root 0 Dec 25 18:37 cwd -> / -r-------- 1 root root 0 Dec 17 22:17 environ lrwxrwxrwx 1 root root 0 Dec 17 22:17 exe -> /usr/lib/systemd/systemd dr-x------ 2 root root 0 Dec 25 18:37 fd dr-x------ 2 root root 0 Dec 25 18:37 fdinfo -rw-r--r-- 1 root root 0 Dec 25 18:37 gid_map -r-------- 1 root root 0 Dec 25 18:37 io -r--r--r-- 1 root root 0 Dec 25 18:37 limits -rw-r--r-- 1 root root 0 Dec 17 22:17 loginuid dr-x------ 2 root root 0 Dec 25 18:37 map_files -r--r--r-- 1 root root 0 Dec 25 18:37 maps -rw------- 1 root root 0 Dec 25 18:37 mem -r--r--r-- 1 root root 0 Dec 15 15:54 mountinfo -r--r--r-- 1 root root 0 Dec 25 18:37 mounts -r-------- 1 root root 0 Dec 25 18:37 mountstats dr-xr-xr-x 6 root root 0 Dec 25 18:37 net dr-x--x--x 2 root root 0 Dec 25 18:37 ns -r--r--r-- 1 root root 0 Dec 25 18:37 numa_maps -rw-r--r-- 1 root root 0 Dec 25 18:37 oom_adj -r--r--r-- 1 root root 0 Dec 25 18:37 oom_score -rw-r--r-- 1 root root 0 Dec 24 18:58 oom_score_adj -r--r--r-- 1 root root 0 Dec 25 18:37 pagemap -r--r--r-- 1 root root 0 Dec 25 18:37 personality -rw-r--r-- 1 root root 0 Dec 25 18:37 projid_map lrwxrwxrwx 1 root root 0 Dec 17 22:18 root -> / -rw-r--r-- 1 root root 0 Dec 25 18:37 sched -r--r--r-- 1 root root 0 Dec 25 18:37 schedstat -r--r--r-- 1 root root 0 Dec 17 22:17 sessionid -rw-r--r-- 1 root root 0 Dec 25 18:37 setgroups -r--r--r-- 1 root root 0 Dec 25 18:37 smaps -r--r--r-- 1 root root 0 Dec 25 18:37 stack -r--r--r-- 1 root root 0 Dec 17 22:17 stat -r--r--r-- 1 root root 0 Dec 21 17:15 statm -r--r--r-- 1 root root 0 Dec 17 22:17 status -r--r--r-- 1 root root 0 Dec 25 18:37 syscall dr-xr-xr-x 3 root root 0 Dec 25 18:37 task -r--r--r-- 1 root root 0 Dec 25 18:37 timers -rw-r--r-- 1 root root 0 Dec 25 18:37 uid_map -r--r--r-- 1 root root 0 Dec 25 18:37 wchan

查看里面status文件会得到进程相关信息(与top类似) [root@centos7 sudoers.d]#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: 128 Groups: VmPeak: 256496 kB VmSize: 191224 kB VmLck: 0 kB VmPin: 0 kB VmHWM: 4208 kB VmRSS: 3152 kB RssAnon: 1524 kB RssFile: 1628 kB RssShmem: 0 kB VmData: 148928 kB VmStk: 132 kB VmExe: 1320 kB VmLib: 3716 kB VmPTE: 116 kB VmSwap: 124 kB Threads: 1 SigQ: 1/4607 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 7be3c0fe28014a03 SigIgn: 0000000000001000 SigCgt: 00000001800004ec CapInh: 0000000000000000 CapPrm: 0000001fffffffff CapEff: 0000001fffffffff CapBnd: 0000001fffffffff CapAmb: 0000000000000000 Seccomp: 0 Cpus_allowed: ffffffff,ffffffff Cpus_allowed_list: 0-63 Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 50397 nonvoluntary_ctxt_switches: 3733


3. 分别用for和while 实现网段网址搜寻

实现192.168.0.0/24网段搜寻: #!/bin/bash for ip in {1..254} ;do { ping -c1 -w 1 192.168.0.$ip &>/dev/null && echo "192.168.0.$ip is success" ; }& done wait

执行结果 [root@centos7 ~]#bash ip_for.sh
192.168.0.1 is success 192.168.0.109 is success 192.168.0.108 is success

#!/bin/bash
declare -i ip=1
while [ $ip -le 254 ] ; do
    {
            ping -c1 -w 1 192.168.0.$ip &>/dev/null && echo "192.168.0.$ip is success" ;

    }&
            let ip++
    done 
    wait

执行结果 [root@centos7 ~]#bash ip_while.sh 192.168.0.1 is success 192.168.0.109 is success 192.168.0.108 is success

用{ }& wait 实现并发执行提高效率


4.initrd作用

initrd 是boot loader initialized RAM disk,一般是压缩过的。它存在的主要目的是在内核启动时加载它,安装其中的驱动,挂载系统的根

解压系统boot/文件下的initramfs-3.10.0-693.el7.x86_64.img文件 重命名为.gz文件 gunzip initramfs-3.10.0-693.el7.x86_64.gz cpio -id < initramfs-3.10.0-693.el7.x86_64 查看解压后文件 bin etc initramfs-3.10.0-693.el7.x86_64 lib64 root sbin sys tmp var dev init lib proc run shutdown sysroot usr

从文件可以看出里面内容很类似一个linux系统文件夹,initrd是在实际根文件系统可用之前挂载到系统中的一个初始根文件系统。initrd与内核绑定在一起, 并作为内核引导过程的一部分进行加载。内核然后会将这个initrd文件作为其阶段引导过程的一部分来加载模块,这样才能在以后的引导过程中使用真正的文 件系统,并挂载实际的根文件系统。