第七周

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

1)如何查看当前系统的所有内核参数

sysctl -a 当前系统内核参数

2)如何修改内核参数

echo 1 > /proc/sys/net/ipv4/ip_forward ;sysctl -p临时修改生效,重启系统后失效

echo "/proc/sys/net/ipv4/ip_forward = 1 >>/etc/sysctl.conf"永久生效

3)常用参数说明:

# 内核panic时,1秒后自动重启

kernel.panic = 1

# 允许更多的PIDs (减少滚动翻转问题); may break some programs 32768

kernel.pid_max = 32768

# 内核所允许的最大共享内存段的大小(bytes)

kernel.shmmax = 4294967296

# 在任何给定时刻,系统上可以使用的共享内存的总量(pages)

kernel.shmall = 1073741824

# 设定程序core时生成的文件名格式

kernel.core_pattern = core_%e

# 当发生oom时,自动转换为panic

vm.panic_on_oom = 1

# 表示强制Linux VM最低保留多少空闲内存(Kbytes)

vm.min_free_kbytes = 1048576

# 该值高于100,则将导致内核倾向于回收directory和inode cache

vm.vfs_cache_pressure = 250

# 表示系统进行交换行为的程度,数值(0-100)越高,越可能发生磁盘交换

vm.swappiness = 0

# 仅用10%做为系统cache

vm.dirty_ratio = 10

# 增加系统文件描述符限制 2^20-1

fs.file-max = 1048575

# 网络层优化

# listen()的默认参数,挂起请求的最大数量,默认128

net.core.somaxconn = 1024

# 增加Linux自动调整TCP缓冲区限制

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

# 进入包的最大设备队列.默认是300

net.core.netdev_max_backlog = 2000

# 开启SYN洪水攻击保护

net.ipv4.tcp_syncookies = 1

# 开启并记录欺骗,源路由和重定向包

net.ipv4.conf.all.log_martians = 1

net.ipv4.conf.default.log_martians = 1

# 处理无源路由的包

net.ipv4.conf.all.accept_source_route = 0

net.ipv4.conf.default.accept_source_route = 0

# 开启反向路径过滤

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.default.rp_filter = 1

# 确保无人能修改路由表

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.default.accept_redirects = 0

net.ipv4.conf.all.secure_redirects = 0

net.ipv4.conf.default.secure_redirects = 0

# 增加系统IP端口限制

net.ipv4.ip_local_port_range = 9000 65533

# TTL

net.ipv4.ip_default_ttl = 64

# 增加TCP最大缓冲区大小

net.ipv4.tcp_rmem = 4096 87380 8388608

net.ipv4.tcp_wmem = 4096 32768 8388608

# Tcp自动窗口

net.ipv4.tcp_window_scaling = 1

# 进入SYN包的最大请求队列.默认1024

net.ipv4.tcp_max_syn_backlog = 8192

# 打开TIME-WAIT套接字重用功能,对于存在大量连接的Web服务器非常有效。

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 0 

# 表示是否启用以一种比超时重发更精确的方法(请参阅 RFC 1323)来启用对 RTT 的计算;为了实现更好的性能应该启用这个选项

net.ipv4.tcp_timestamps = 0

# 表示本机向外发起TCP SYN连接超时重传的次数

net.ipv4.tcp_syn_retries = 2

net.ipv4.tcp_synack_retries = 2

# 减少处于FIN-WAIT-2连接状态的时间,使系统可以处理更多的连接。

net.ipv4.tcp_fin_timeout = 10 

# 减少TCP KeepAlive连接侦测的时间,使系统可以处理更多的连接。

# 如果某个TCP连接在idle 300秒后,内核才发起probe.如果probe 2次(每次2秒)不成功,内核才彻底放弃,认为该连接已失效.

net.ipv4.tcp_keepalive_time = 300

net.ipv4.tcp_keepalive_probes = 2

net.ipv4.tcp_keepalive_intvl = 2

# 系统所能处理不属于任何进程的TCP sockets最大数量

net.ipv4.tcp_max_orphans = 262144

# 系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。

net.ipv4.tcp_max_tw_buckets = 20000

# arp_table的缓存限制优化

net.ipv4.neigh.default.gc_thresh1 = 128

net.ipv4.neigh.default.gc_thresh2 = 512

net.ipv4.neigh.default.gc_thresh3 = 4096

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

Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。这个目录中包含每个进程的状态信息。

top中展示的进程状态有:

PID列:进程ID,为/proc目录下的数字目录,每个进程的PID数字做为目录名称。

USER :进程的所属用户,为/proc/PID/status文件中的Uid这行所对应的用户名称。

PR :任务的调度优先级 , 在/proc/PID/stat文件中第18列数值

NI :表示任务的NICE值,在/proc/PID/stat文件中第19列数值

VIRT :虚拟内存大小(KiB),任务使用的虚拟内存总量。 它包括所有代码,数据和共享库以及已换出的页面和已映射但未使用的页面。      在/proc/PID/statm文件中第1列数值(单位为页)

RES :表示驻留内存大小(KiB) ,任务正在使用的非交换物理内存。在/proc/PID/statm文件中第2列数值(单位为页)

SHR :表示共享内存大小(KiB),可能与其他进程共享的内存,在/proc/PID/statm文件中第3列数值(单位为页)

S  : 为/proc/PID/status文件中State:这行显示的进程状态

%CPU :CPU使用率,自上一次屏幕刷新以来占用的CPU时间与总CPU时间的百分比。(通过计算得到)

%MEM :内存使用(RES)任务当前使用的可用物理内存份额。(通过计算RES与总内存比率得到)

TIME+ :任务自启动以来使用的总CPU时间,显示百分之一秒的精度(未找到)在/proc/PID/stat文件中体现为两个时间之和 :第14列该任务在用户态运行的时间 和第15列该任务在核心态运行的时间

COMMAND列:为/proc/PID/comm文件内容

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

#!/bin/bash

ip=1

while [ $ip -le 255 ]

do

ping  -c 1 10.0.0.${ip}  &>/dev/null

if [ $? -eq 0 ]

then

echo "10.0.0.${ip} is up"

else

echo "10.0.0.${ip} is down"

fi

ip=$(($ip+1))

done


for ip in $(seq 1 254)

do

ping  -c 1 10.0.0.${ip}  &>/dev/null

if [ $? -eq 0 ]

then

echo "10.0.0.${ip} is up"

else

echo "10.0.0.${ip} is down"

fi

done


4、说明initrd的作用

initrd 是 boot loader initialized RAM disk的缩写,表示由 boot loader 初始化的内存盘。在 linux内核启动前, boot loader 会将磁盘等存储介质中的 initrd 文件先加载到内存,内核启动时会先访问该内存中的 initrd 文件系统然后才访问真正的根文件系统。启动过程被分为两个过程,第一过程是执行内存中的 initrd 文件系统中的初始化文件(在Linux2.4 内核是/linuxrc 文件,是由文件系统镜像生成的;在Linux2.6内核是/init文件,是使用 cpio 工具生成),负责加载内核访问根文件系统存储介质的驱动模块, 以及加载根文件系统。第二过程是执行真正的根文件系统中的 /sbin/init 进程。

initrd的主要作用:

(1)使linux 发行版适应各种不同的硬件架构

Linux发行版在内核中只编译了基本的硬件驱动,在安装过程中通过检测系统硬件,生成包含安装系统硬件驱动的 initrd。linux 发行版必须适应各种不同的硬件架构,但又不可能把所有的驱动编译进内核,否则内核会变得臃肿庞大。所以Initrd成为linux 发行版的必备部件。

(2)livecd适应复杂的硬件环境。

livecd是一种从CD光盘中直接引导出一个可用的Linux系统。这种方式面临更为复杂的硬件环境,也需要使用Initrd技术

(3)usb启动盘必备技术

因为usb从驱动加载到设备真正可用大概需要几秒钟时间。如果将 usb 驱动编译进内核,那在内核访问 usb 设备时, usb 设备通常没有初始化完毕。所以改为在 initrd 中加载 usb 驱动,然后休眠几秒中,等待 usb设备初始化完毕后再挂载 usb 设备中的文件系统。

(4)实现个性化 bootsplash

Boot-splash通过对内核打补丁来改变linux控制台对图像显示的支持,通过用户空间程式来定制启动logo、设定控制台背景和显隐启动时的字符信息,甚至能够支持开机画面的动画显示。在 linuxrc 脚本中可以很方便地启用个性化 bootsplash。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 1、列举常见的内核参数以及参数的意义 (1)net.ipv4.ip_forward:数据包的路由转发开关,设置为1...
    卫清华阅读 203评论 0 0
  • 1、列举常见的内核参数以及参数的意义 (1)net.ipv4.ip_forward:数据包的路由转发开关,设置为1...
    小邢_阅读 351评论 0 0
  • 1、简述linux操作系统启动流程 CentOS 5 启动 1.POST:通电自检 2.BIOS:BO...
    肖恩的博客阅读 265评论 0 0
  • 一、简述linux操作系统启动流程 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,...
    N32_Diamond阅读 2,269评论 1 28
  • 1、100.0.0.16/28 对应网段的网关地址、广播地址、可分配IP地址范围 /28掩码对应255.255....
    是小何同学阅读 346评论 0 0