当前位置: 首页 > 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.lryc.cn/news/627032.html

相关文章:

  • 【网络运维】Linux 文本处理利器:sed 命令
  • MYSQL-增删查改CRUD
  • uni-app跨端开发最后一公里:详解应用上架各大应用商店全流程
  • 生产级的雪花算法
  • 自动驾驶导航信号使用方式调研
  • C语言实现全排列(非递归法)(以猪八戒买包子的故事为例解释)
  • SpringBoot 整合 Langchain4j RAG 技术深度使用解析
  • imx6ull-驱动开发篇30——Linux 非阻塞IO实验
  • redis---常用数据类型及内部编码
  • 设计具有功能安全和网络安全能力的新型半导体芯片
  • 攻克PostgreSQL专家认证
  • Unicode 字符串转 UTF-8 编码算法剖析
  • JVM面试精选 20 题(终)
  • SQL count(*)与 sum 区别
  • 第三阶段数据-4:SqlHelper类,数据库删除,DataTable创建
  • STM32F4 内存管理介绍及应用
  • 建模工具Sparx EA的多视图协作教程
  • PyTorch - Developer Notes
  • 吴恩达 Machine Learning(Class 3)
  • 国产化PDF处理控件Spire.PDF教程:如何使用 Python 添加水印到 PDF
  • Linux命令大全-ps命令
  • Linux系统之部署nullboard任务管理工具
  • 基于springboot中学信息技术课程教学网站
  • 栈上创建和堆上创建区别
  • Nginx 的完整配置文件结构、配置语法以及模块详解
  • 设计模式1-单例模式
  • 继续记事本项目
  • 盲盒商城h5源码搭建可二开幸运盲盒回收转增定制开发教程
  • Hyperledger Fabric官方中文教程-改进笔记(十三)-使用测试网络创建通道
  • Google Chrome 扩展不受信任 - 不受支持的清单版本 解决方案