Linux上的sysctl

本文介绍Linux中Sysctl命令的应用,包括如何使用它来查看、设置内核参数,并讲解了通过Sysctl实现系统配置的方法。此外,还介绍了如何利用Sysctl.conf文件确保设置在重启后依然生效。
原贴:http://www.linuxpk.com/2386.html
Linux上的sysctl

我们常常在 Linux 的 /proc/sys 目录下,手动设定一些 kernel 的参数或是直接 echo 特定的值给一个 proc下的虚拟档案,俾利某些档案之开启,常见的例如设定开机时自动启动 IP Forwarding:

  echo “1” > /proc/sys/net/ipv4/ip_forward

   其实,在 Linux 我们还可以用 sysctl command 便可以简易的去检视、设定或自动配置 特定的 kernel 设定。我们可以在系统提示符号下输入「sysctl -a」,摘要如后:abi.defhandler_coff = 117440515

  dev.raid.speed_limit_max = 100000

  net.ipv4.conf.default.send_redirects = 1

  net.ipv4.conf.default.secure_redirects = 1

  net.ipv4.conf.default.accept_redirects = 1

  net.ipv4.conf.default.mc_forwarding = 0

  net.ipv4.neigh.lo.delay_first_probe_time = 5

  net.ipv4.neigh.lo.base_reachable_time = 30

  net.ipv4.icmp_ratelimit = 100

  net.ipv4.inet_peer_gc_mintime = 10

  net.ipv4.igmp_max_memberships = 20

  net.ipv4.ip_no_pmtu_disc = 0

  net.core.no_cong_thresh = 20

  net.core.netdev_max_backlog = 300

  net.core.rmem_default = 65535

  net.core.wmem_max = 65535

  vm.kswapd = 512 32 8

  vm.overcommit_memory = 0

  vm.bdflush = 30 64 64 256 500 3000 60 0 0

  vm.freepages = 351 702 1053

  kernel.sem = 250 32000 32 128

  kernel.panic = 0

  kernel.domainname = (none)

  kernel.hostname = pc02.shinewave.com.tw

  kernel.version = #1 Tue Oct 30 20:11:04 EST 2001

  kernel.osrelease = 2.4.9-13

  kernel.ostype = Linux

  fs.dentry-state = 1611 969 45 0 0 0

  fs.file-nr = 1121 73 8192

  fs.inode-state = 1333 523 0 0 0 0 0

  从上述的语法我们大概可看出 sysctl 的表示法乃把目录结构的「/」以「.」表示,一层一层的连结下去。当然以echo 特定的值给一个 proc下的虚拟档案也是可以用 sysctl加以表示,例如:

  #sysctl –w net.ipv4.ip_forward =”1”

  或是直接在 /etc/sysctl.conf 增删修改特定档案的 0,1值亦可:

  # Enables packet forwarding

  net.ipv4.ip_forward = 1

  # Enables source route verification

  net.ipv4.conf.default.rp_filter = 1

  # Disables the magic-sysrq key

  kernel.sysrq = 0

   当然如果考虑 reboot 后仍有效, 直接在 /etc/sysctl.conf 增删修改特定档案的 0,1值才可使之保留设定(以RedHat 为例,每次开机系统启动后, init 会执行 /etc/rc.d/rc.sysinit,便会使用 /etc/sysctl.conf 的预设值去执行 sysctl)。

  相关参考档案:

  /sbin/sysctl

  /etc/sysctl.conf

  sysctl 及sysctl.conf manpage

  /usr/src/linux-x.y.z/Documentation/sysctl/*

  /usr/share/doc/kernel-doc-x.y.z/sysctl/* (RedHat)
本文来自:http://www.linuxpk.com/2386.html
-->linux电子图书免费下载和技术讨论基地
### Linux 系统中 sysctl 的使用方法、配置信息及参数说明 `sysctl` 是 Linux 系统中的一个工具,用于动态地修改内核参数。通过 `sysctl`,用户可以在不重启系统的情况下调整内核行为。以下是关于 `sysctl` 的详细使用方法、配置信息以及参数说明。 #### 1. 命令行使用方法 在命令行中,可以使用以下方式查看或设置内核参数: - **查看所有内核参数** 使用 `sysctl -a` 可以列出当前系统中所有的内核参数及其值[^1]。 - **查看特定参数** 使用 `sysctl <parameter_name>` 查看某个特定参数的值。例如,查看 `kernel.log_martians` 参数的值: ```bash sysctl kernel.log_martians ``` - **临时修改参数** 使用 `sysctl -w` 可以临时修改内核参数(重启后失效)。例如,将 `kernel.log_martians` 设置为 1: ```bash sysctl -w kernel.log_martians=1 ``` - **加载配置文件** 使用 `-p` 选项可以从指定的配置文件加载参数设置。默认情况下,`sysctl` 会从 `/etc/sysctl.conf` 文件加载配置: ```bash sysctl -p ``` 如果需要从其他文件加载配置,可以指定文件路径: ```bash sysctl -p /path/to/custom.conf ``` #### 2. 配置文件说明 `sysctl` 的配置文件通常位于 `/etc/sysctl.conf` 或 `/etc/sysctl.d/` 目录下。以下是一些关键点: - **配置文件格式** 每行定义一个参数及其值,格式为 `parameter = value`。例如: ```bash kernel.log_martians = 1 net.ipv4.ip_forward = 1 ``` - **注释** 使用 `#` 开头的行会被视为注释,不会被解析。例如: ```bash # Enable packet forwarding for IPv4 net.ipv4.ip_forward = 1 ``` - **二进制值** 对于布尔类型的参数,0 表示禁用,1 表示启用。例如: ```bash net.ipv4.tcp_syncookies = 1 ``` #### 3. 常见参数说明 以下是一些常见的 `sysctl` 参数及其作用: - **kernel.log_martians** 决定是否记录无法路由的包(martian packets)。如果设置为 1,则会记录这些包的日志[^1]。 - **net.ipv4.ip_forward** 控制是否允许 IP 转发。如果设置为 1,则启用 IP 转发功能,允许系统作为路由器使用[^2]。 - **net.ipv4.tcp_syncookies** 启用 SYN Cookies 功能,防止 SYN Flood 攻击。如果设置为 1,则启用该功能[^2]。 - **fs.file-max** 设置系统可以打开的最大文件数。例如: ```bash fs.file-max = 100000 ``` - **vm.swappiness** 控制系统使用交换空间的倾向。值越低,系统越倾向于保留内存而不是使用交换空间。例如: ```bash vm.swappiness = 10 ``` #### 4. 示例代码 以下是一个完整的示例,展示如何修改 `sysctl` 参数并保存到配置文件中: ```bash # 修改内核参数 sysctl -w kernel.log_martians=1 # 将修改保存到配置文件 echo "kernel.log_martians = 1" >> /etc/sysctl.conf # 加载配置文件 sysctl -p ``` ### 注意事项 - 修改某些内核参数可能会影响系统的稳定性或安全性,请谨慎操作。 - 在生产环境中,建议先测试修改后的参数效果,确保其符合预期。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值