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

相关文章

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Python装饰器之类装饰器详解

《Python装饰器之类装饰器详解》本文将详细介绍Python中类装饰器的概念、使用方法以及应用场景,并通过一个综合详细的例子展示如何使用类装饰器,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. 引言2. 装饰器的基本概念2.1. 函数装饰器复习2.2 类装饰器的定义和使用3. 类装饰