linux -- sysctl详解1

2024-03-25 16:04
文章标签 linux 详解 sysctl

本文主要是介绍linux -- sysctl详解1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、简介

1、什么是内核参数(kernel parameters at runtime)

内核参数是可在系统运行时调整的可调整参数。不需要重启或重新编译内核就可以使更改生效。可以通过以下方法处理内核参数:

  • sysctl 命令
  • 挂载于 /proc/sys/ 目录的虚拟文件系统
  • /etc/sysctl.d/ 目录中的配置文件
  • /etc/sysctl.conf 文件等
    Tunables 被内核子系统划分为不同的类,Red Hat Enterprise Linux 有以下可调整类:
可调整类(Tunable class)子系统 (Subsystem)
abi执行域和个人
crypto加密接口
debug内核调试接口
fs全局和特定文件系统的 tunables
kernel全局内核 tunables
net网络 tunables
sunrpcSun 远程过程调用 (NFS)
user用户命名空间限制
vm调整和管理内存、缓冲和缓存

1、sysctl涉及的系统配置文件

/run/sysctl.d/*.conf
/etc/sysctl.d/*.conf
/usr/local/lib/sysctl.d/*.conf
/usr/lib/sysctl.d/*.conf
/lib/sysctl.d/*.conf
/etc/sysctl.conf
/proc/sys

2、sysctl -a 会打印出所有的配置

3、 sysctl --system 会打印出如下配置文件中的配置项

/run/sysctl.d/*.conf
/etc/sysctl.d/*.conf
/usr/local/lib/sysctl.d/*.conf
/usr/lib/sysctl.d/*.conf
/lib/sysctl.d/*.conf
/etc/sysctl.conf
[root@yyzc-zjjcs04 ~]# sysctl --system
* Applying /usr/lib/sysctl.d/00-system.conf ...
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
* Applying /usr/lib/sysctl.d/50-default.conf ...
kernel.sysrq = 16
kernel.core_uses_pid = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.all.promote_secondaries = 1
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /usr/lib/sysctl.d/60-libvirtd.conf ...
fs.aio-max-nr = 1048576
* Applying /etc/sysctl.d/99-sysctl.conf ...
kernel.sem = 1350 32000 300 1024
* Applying /etc/sysctl.conf ...
kernel.sem = 1350 32000 300 1024
[root@yyzc-zjjcs04 ~]#

二、如何修改内核参数

1、临时修改内核参数1

sysctl <TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE>root@k8s-master:~# sysctl  net.ipv4.tcp_syn_retries=3
net.ipv4.tcp_syn_retries = 3
root@k8s-master:~# sysctl  net.ipv4.tcp_syn_retries
net.ipv4.tcp_syn_retries = 3
root@k8s-master:~# cat /proc/sys/net/ipv4/tcp_syn_retries
3
root@k8s-master:~#

注意: 值与等号之间无空格,否则会失败

root@k8s-master:~# sysctl  net.ipv4.tcp_syn_retries= 3
sysctl: setting key "net.ipv4.tcp_syn_retries": Invalid argument
sysctl: cannot stat /proc/sys/3: No such file or directory
root@k8s-master:~#

上面的示例命令在系统运行时更改了参数值。更改将立即生效,无需重新启动。但是在系统重启后,所在的改变会返回到默认状态。

以下方式也是临时更改,重启后失效

 sysctl -w <TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE> 

上述命令还会更改/proc/sys 目录中对应类的文件中的值,示例如下

root@k8s-master:/proc/sys/net/ipv4# cat tcp_syn_retries
4
root@k8s-master:/proc/sys/net/ipv4# sysctl net.ipv4.tcp_syn_retries
net.ipv4.tcp_syn_retries = 4
root@k8s-master:/proc/sys/net/ipv4# sysctl -w  net.ipv4.tcp_syn_retries=5
net.ipv4.tcp_syn_retries = 5
root@k8s-master:/proc/sys/net/ipv4# sysctl net.ipv4.tcp_syn_retries
net.ipv4.tcp_syn_retries = 5
root@k8s-master:/proc/sys/net/ipv4# cat tcp_syn_retries
5
root@k8s-master:/proc/sys/net/ipv4#

2、临时修改内核参数2

echo <TARGET_VALUE> > /proc/sys/<TUNABLE_CLASS>/<PARAMETER>

为内核参数分配一个目标值,但是这些更改将在系统重启后消失。

root@k8s-master:/proc/sys/net/ipv4# sysctl  net.ipv4.tcp_syn_retries
net.ipv4.tcp_syn_retries = 6
root@k8s-master:/proc/sys/net/ipv4# cat tcp_syn_retries
6
root@k8s-master:/proc/sys/net/ipv4# echo 3 >tcp_syn_retries
root@k8s-master:/proc/sys/net/ipv4# cat tcp_syn_retries
3
root@k8s-master:/proc/sys/net/ipv4# sysctl  net.ipv4.tcp_syn_retries
net.ipv4.tcp_syn_retries = 3
root@k8s-master:/proc/sys/net/ipv4#

3、永久修改内核参数方法1

 sysctl -w <TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE> >> /etc/sysctl.conf

示例命令会更改内核参数,并将其写入 /etc/sysctl.conf 文件,该文件会覆盖内核参数的默认值。更改会立即并永久生效,无需重启。

上述命令还会更改/proc/sys 目录中对应类的文件中的值

4、永久修改内核参数方法2

在 /etc/sysctl.d/ 中创建一个新配置文件或者直接在 /etc/sysctl.conf文件中修改;

vim /etc/sysctl.d/<some_file.conf>

在文件中配置内核参数,一行一个。

<TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE>
<TUNABLE_CLASS>.<PARAMETER>=<TARGET_VALUE>

保存配置文件。重启机器以使更改生效。或者,要在不重启的情况下应用更改,请输入:

sysctl -p /etc/sysctl.d/<some_file.conf>
root@k8s-master:/proc/sys/net/ipv4# sysctl  -p /etc/sysctl.conf
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_synack_retries = 6
root@k8s-master:/proc/sys/net/ipv4

该命令允许您从之前创建的配置文件中读取值,并将这些值加载到内核中去。

这篇关于linux -- sysctl详解1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/845511

相关文章

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

SpringBoot AspectJ切面配合自定义注解实现权限校验的示例详解

《SpringBootAspectJ切面配合自定义注解实现权限校验的示例详解》本文章介绍了如何通过创建自定义的权限校验注解,配合AspectJ切面拦截注解实现权限校验,本文结合实例代码给大家介绍的非... 目录1. 创建权限校验注解2. 创建ASPectJ切面拦截注解校验权限3. 用法示例A. 参考文章本文

Java中字符编码问题的解决方法详解

《Java中字符编码问题的解决方法详解》在日常Java开发中,字符编码问题是一个非常常见却又特别容易踩坑的地方,这篇文章就带你一步一步看清楚字符编码的来龙去脉,并结合可运行的代码,看看如何在Java项... 目录前言背景:为什么会出现编码问题常见场景分析控制台输出乱码文件读写乱码数据库存取乱码解决方案统一使

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e