linux的sysctl系统以及systemd系统。

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),避免修改默认文件。

注意事项

  1. 权限要求 :修改内核参数需要 root 权限(使用 sudo)。
  2. 风险提示:不当修改内核参数可能导致系统不稳定(如网络中断、进程崩溃),建议先了解参数含义再操作。
  3. 参数依赖:部分参数依赖内核编译选项(若内核未开启相关功能,参数可能无效)。
  4. 生效范围:部分参数(如网络相关)修改后,对已建立的连接可能无效,需重启对应服务。

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:管理系统本地化设置(语言、编码等)。

相关推荐
Wy_编程2 小时前
Linux-文本搜索工具grep
linux·运维·服务器
qq998992 小时前
AAA服务器技术
运维·服务器
Lovyk2 小时前
Linux Shell 常用操作与脚本示例详解
linux·运维·服务器
iCan_qi2 小时前
【Mac】【Minecraft】关于如何在Mac上搭建基岩版MC服务器的方法
运维·服务器·macos·minecraft
xixingzhe25 小时前
多人同时导出 Excel 导致内存溢出
服务器·设计
吱吱企业安全通讯软件5 小时前
吱吱企业通讯软件保证内部通讯安全,搭建数字安全体系
大数据·网络·人工智能·安全·信息与通信·吱吱办公通讯
云手机掌柜5 小时前
Tumblr长文运营:亚矩阵云手机助力多账号轮询与关键词布局系统
大数据·服务器·tcp/ip·矩阵·流量运营·虚幻·云手机
yuanpan6 小时前
ubuntu系统上的conda虚拟环境导出方便下次安装
linux·ubuntu·conda
云边云科技6 小时前
零售行业新店网络零接触部署场景下,如何选择SDWAN
运维·服务器·网络·人工智能·安全·边缘计算·零售