当前位置: 首页 > news >正文

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

http://www.dtcms.com/a/340428.html

相关文章:

  • Linux + arm 内存属性
  • 静/动态库 IIC(arm) day58
  • 机器学习——网格搜索(GridSearchCV)超参数优化
  • Linux + arm 内存屏障
  • 商用厨房物联网智能化解决方案——打造环保、高效、安全的智慧餐饮新生态
  • C语言基础:(二十)自定义类型:结构体
  • 领码方案:通用物联网数据采集低代码集成平台——万物智联时代的黄金钥匙
  • 【Grafana】grafana-image-renderer配合python脚本实现仪表盘导出pdf
  • 车载软件架构 --- 赢得汽车软件开发竞赛
  • MySQL事务及原理详解
  • YAML格式笔记
  • SQL面试题及详细答案150道(41-60) --- 条件查询与分组篇
  • 【自记】Power BI 中 ALL、ALLSELECTED、ALLEXCEPT、ALLNOBLANKROW 的区别说明
  • 自学嵌入式第二十三天:数据结构(3)-双链表
  • SQL四大类命令(DQL、DML、DDL、DCL)
  • 第1课_Rust基础入门
  • Rust系统编程:从入门到实战的蜕变之旅
  • MySQL 数据与表结构导出 Excel 技术文档
  • 基础笔记8.20
  • Spring Cloud Gateway 负载均衡全面指南
  • 甘特图-项目可视化引擎|Highcharts.js 模块特征
  • Linux I/O 多路复用实战:Select/Poll 编程指南
  • Java主流框架全解析:从企业级开发到云原生
  • 通过自动化本地计算磁盘与块存储卷加密保护数据安全
  • 819 机器学习-决策树2
  • 学习threejs,打造宇宙星云背景
  • 芯科科技即将重磅亮相IOTE 2025深圳物联网展,以全面的无线技术及生态覆盖赋能万物智联
  • CentOS 系统 Java 开发测试环境搭建手册
  • CentOS 7.6安装崖山23.4.1.102企业版踩坑实战记录(单机)
  • Git 新手完全指南(二):在vscode中使用git