一、概述

        sysctl 是 Linux 系统中的一个实用工具,用于在运行时读取和修改内核参数。这些参数控制着系统的各种行为,包括网络配置、内存管理、进程调度等。通过 sysctl,系统管理员可以动态地调整这些参数,而无需重启系统。

二、用法

1、基本语法

sysctl [选项] [变量 [=值]]

(1)查看所有参数

        直接运行 sysctl 命令,它会显示当前系统内核中众多参数及其对应的值。例如,会显示像网络相关的参数(如 net.ipv4.ip_forward)、文件系统相关的参数(如 vm.swappiness)等。

(2)查看特定参数

        可以通过在命令后指定参数名来查看特定内核参数的值。比如要查看系统的最大文件描述符数量(在Linux中通常由 fs.file - max 控制),可以运行 sysctl fs.file - max。

2、常用选项

-a: 显示所有可用的内核参数及其当前值。

-n: 仅显示内核参数的值,不显示参数名。

-w: 设置内核参数的值。

-p [文件]: 从指定文件加载内核参数设置,默认是从 /etc/sysctl.conf 文件加载。

-e: 忽略不存在的变量,通常与 -p 一起使用。

3、获取帮助

可以使用如下命令获取帮助

sysctl -h

实际操作如下:

三、 应用示例

1、显示所有内核参数

要查看系统中所有的内核参数及其当前值:

sysctl -a

实际操作如下:

关于网络的部分如下(截取部分):

关于内存的部分如下(截取部分):

2、显示特定内核参数

如果想查看某个特定的内核参数,比如 kernel.hostname:

sysctl kernel.hostname

实际操作如下:

3、修改内核参数

可以使用 -w 选项来修改内核参数。例如,临时更改系统的最大打开文件描述符数:

sysctl -w fs.file-max=100000

4、永久修改内核参数

为了使修改在系统重启后仍然有效,需要将参数写入到 /etc/sysctl.conf 文件中。例如,永久设置最大打开文件描述符数:

echo "fs.file-max = 100000" | sudo tee -a /etc/sysctl.conf

sudo sysctl -p

5、加载配置文件

如果已经编辑了 /etc/sysctl.conf 或其他配置文件,并希望立即应用这些更改,可以使用 -p 选项:

sudo sysctl -p

四、参数分类和解释

参数大致可以分为以下几个类别:

1、内存管理

(1)vm.swappiness: 控制交换空间的使用频率。 参数控制着系统将内存数据交换到磁盘交换空间(swap)的倾向程度。值越小,说明系统更倾向于使用物理内存而不是交换空间。

(2)vm.dirty_ratio: 控制脏页占总内存的比例。

(3)vm.max_map_count: 最大内存映射区域的数量。

2、网络配置

(1)net.ipv4.ip_forward: 启用或禁用 IP 转发。

(2)net.core.somaxconn: 监听队列的最大长度。

(3)net.ipv4.tcp_max_syn_backlog: SYN 收到队列的最大长度。

(4)net.ipv4.tcp_syncookies :当设置为1时,可以防范SYN Flood攻击。它通过在服务器端发送一个特殊的SYN - ACK包来验证客户端的真实性。

3、进程调度

(1)kernel.pid_max: 允许的最大 PID 数。

(2)kernel.sched_migration_cost_ns: 进程迁移的成本(纳秒)。

(3)kernel.sched_min_granularity_ns: 调度最小粒度(纳秒)。

五、使用场景

1、性能调优

根据应用程序的需求调整内核参数,提高系统性能。

2、安全性增强

通过调整某些内核参数,增强系统的安全性。

3、故障排除

在遇到系统问题时,通过调整内核参数进行诊断和解决。

六、其他事项

1、谨慎操作: 修改内核参数可能会影响系统的稳定性和性能,建议在充分了解参数含义后再进行修改。

2、备份配置: 在修改 /etc/sysctl.conf 文件之前,最好先备份原始文件。

3、验证更改: 修改内核参数后,应验证其是否按预期生效,并观察系统的行为变化。

希望这些信息能帮助大家更好地理解和使用 sysctl 命令!


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


更多推荐