sysctl 系统
sysctl
系统的核心是内核参数的存储与交互框架。内核在运行时会维护大量可配置的参数(如网络缓冲区大小、进程限制、虚拟内存策略等),这些参数通过特定的接口暴露给用户态,sysctl
就是操作这些接口的标准化方式。
内核参数的存储位置
不同系统的内核参数存储方式略有差异:
Linux 系统 :内核参数通过虚拟文件系统 /proc/sys/
暴露。例如,参数 net.ipv4.ip_forward
对应文件 /proc/sys/net/ipv4/ip_forward
,文件内容即为参数值。
BSD 系统(如 FreeBSD) :内核参数通过 /proc/sys/
或独立的 sysctl
内核接口管理,逻辑与 Linux 类似。
内核参数的命名规则
内核参数采用层级化命名 (类似文件路径),用 .
分隔层级,例如:
net.ipv4.ip_forward
:控制 IPv4 转发(是否开启路由功能)。
vm.swappiness
:控制虚拟内存的交换策略(值越高越容易使用 swap 分区)。
fs.file-max
:系统允许打开的最大文件描述符数量。
命名规则与 /proc/sys/
下的文件路径一一对应(将 .
替换为 /
即可找到对应文件)
参数的生效机制
临时生效 :通过 sysctl
命令修改的参数,立即生效,但重启系统后会恢复默认值(因为修改的是内存中的运行时参数)。
永久生效 :需将参数写入配置文件(如 /etc/sysctl.conf
),系统启动时会加载配置文件中的参数。
sysctl 命令
sysctl
命令是用户态操作内核参数的接口,支持查询、修改、加载配置等功能。
基本语法
sysctl [选项] [参数名=值]

核心操作示例
# 查看是否开启IPv4转发(0=关闭,1=开启)
sysctl net.ipv4.ip_forward
sysctl -n vm.swappiness # 输出:60(默认值)
# 查看所有与网络相关的参数
sysctl -a | grep net
# 查看所有虚拟内存相关的参数
sysctl -a | grep vm
# 临时开启IPv4转发(例如在路由器或VPN服务器上需要)
sysctl -w net.ipv4.ip_forward=1
# 临时调整虚拟内存交换策略(降低swap使用频率)
sysctl -w vm.swappiness=10
这些是临时的,永久修改内核需要将参数写入配置文件
编辑配置文件(Linux 默认是 /etc/sysctl.conf
,部分系统会优先加载 /etc/sysctl.d/
目录下的 .conf
文件)

手动加载配置文件(使修改立即生效,无需重启)
sysctl -p # 加载默认配置文件 /etc/sysctl.conf
加载配置文件的优先级
现代 Linux 系统(如 CentOS 7+、Ubuntu 16.04+)通常采用目录 /etc/sysctl.d/
管理配置,而非单一的 sysctl.conf
。规则如下:
系统会按文件名顺序加载 /etc/sysctl.d/*.conf
中的参数。
/etc/sysctl.conf
相当于 /etc/sysctl.d/99-sysctl.conf
(优先级最低,会被其他文件覆盖)。
建议将自定义配置放在 /etc/sysctl.d/
下(如 50-custom.conf
),避免修改默认文件。
注意事项
- 权限要求 :修改内核参数需要 root 权限(使用
sudo
)。 - 风险提示:不当修改内核参数可能导致系统不稳定(如网络中断、进程崩溃),建议先了解参数含义再操作。
- 参数依赖:部分参数依赖内核编译选项(若内核未开启相关功能,参数可能无效)。
- 生效范围:部分参数(如网络相关)修改后,对已建立的连接可能无效,需重启对应服务。
systemd系统
systemd 是 Linux 系统中新一代的系统和服务管理器,它替代了传统的 SysVinit 和 Upstart,成为目前主流 Linux 发行版(如 Ubuntu、Fedora、Debian、CentOS 等)的默认初始化系统。其核心目标是解决传统 init 系统的缺陷(如启动速度慢、依赖管理复杂、缺乏动态服务控制等),并提供更高效、灵活的系统管理能力。
systemd 的核心作用
系统启动时,内核完成初始化后会启动第一个用户态进程(PID=1
),而 systemd 就是这个进程。它负责:
启动和管理系统中的所有服务(如网络服务、数据库服务等);
处理系统运行级别(通过 "目标" 机制替代传统 runlevel);
管理设备、挂载点、定时器、用户会话等;
收集和管理系统日志;
监控进程状态,实现服务自动重启等故障恢复。
systemd 的核心特性
传统 SysVinit 按顺序启动服务(依赖前一个服务完成),启动速度慢。
systemd 会分析服务间的依赖关系,并行启动无依赖的服务,大幅缩短系统启动时间。
systemd 将所有需要管理的资源(服务、设备、挂载点等)统一抽象为 "单元(unit)",每个单元由对应的配置文件(.unit
)定义。
按需激活服务(socket 激活)
统一日志管理(journald)
依赖关系自动处理
系统状态快照与恢复
基于 cgroup 的进程管理
systemd 的核心组件
systemd 是一个套件,包含多个协同工作的工具和服务,核心组件包括:
systemd
:主守护进程(PID=1
),负责启动和管理所有单元;
systemctl
:命令行工具,用于管理单元(启动、停止、查询状态等);
journald
:日志收集服务,存储日志到 /var/log/journal
(默认);
journalctl
:查询 journald
日志的命令;
udev
:设备管理服务,自动检测硬件并生成 .device
单元;
logind
:管理用户会话(登录、注销、休眠等);
timedatectl
:管理系统时间和时区;
hostnamectl
:管理主机名;
localectl
:管理系统本地化设置(语言、编码等)。