sysctl命令用于在运行时查看和修改Linux内核参数。这些参数位于虚拟文件系统/proc/sys/目录下,控制着系统的各种行为,包括网络、内存、文件系统、安全等方面的配置。
/etc/sysctl.conf文件。
| 选项 | 描述 | 示例 |
|---|---|---|
| -a, --all | 显示所有可用的内核参数 | sysctl -a |
| -n, --values | 只显示参数值,不显示参数名 | sysctl -n kernel.hostname |
| -e, --ignore | 忽略未知参数的错误 | sysctl -e unknown.param |
| -w, --write | 设置内核参数(默认行为) | sysctl -w kernel.domainname=example.com |
| -p, --load | 从配置文件加载设置 | sysctl -p /etc/sysctl.conf |
| --system | 从系统所有配置文件加载设置 | sysctl --system |
| -r, --pattern | 使用正则表达式匹配参数名 | sysctl -a -r '^net\.' |
| -A | 显示所有参数,格式同-a | sysctl -A |
1. 查看所有内核参数:
2. 查看特定内核参数:
3. 修改内核参数:
1. 永久修改内核参数:
2. 从配置文件加载设置:
3. 配置文件目录结构:
4. 创建自定义配置文件:
1. 网络优化:
2. 服务器性能调优:
3. 安全加固:
4. 数据库服务器优化:
1. 批量修改参数:
2. 备份和恢复sysctl设置:
3. 脚本中安全地修改参数:
4. 监控sysctl参数变化:
1. 修改前的测试:
2. 使用配置文件目录:
3. 了解参数含义:
| 命令 | 描述 | 与sysctl的关系 |
|---|---|---|
| /proc/sys/ | 内核参数虚拟文件系统 | sysctl修改的参数对应/proc/sys/下的文件 |
| echo | 向文件写入内容 | 可以直接修改/proc/sys/下的文件,如echo 1 > /proc/sys/net/ipv4/ip_forward |
| cat | 查看文件内容 | 可以直接查看/proc/sys/下的文件内容 |
| systemd-sysctl | systemd的sysctl服务 | 在系统启动时加载sysctl配置 |
| tune2fs | ext2/3/4文件系统调优 | 文件系统级别的调优,与sysctl互补 |
| 参数 | 描述 | 推荐值 | 用途 |
|---|---|---|---|
net.ipv4.ip_forward |
启用IP转发 | 1(路由器) 0(主机) |
网络路由 |
net.core.somaxconn |
最大连接队列 | 65535 | 高并发服务器 |
vm.swappiness |
交换倾向性 | 10-60 | 内存管理 |
fs.file-max |
最大文件句柄数 | 65535-2097152 | 文件操作 |
net.ipv4.tcp_syncookies |
SYN cookies保护 | 1 | 安全防护 |
kernel.panic |
panic后重启时间 | 10 | 系统稳定性 |
net.ipv4.tcp_tw_reuse |
TIME-WAIT重用 | 1 | 网络性能 |
vm.overcommit_memory |
内存过量使用 | 0或2 | 内存管理 |