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

【Linux系统】系统初始化管理 systemd | service

系统初始化管理

系统初始化守护进程

  • 区分使用的时哪一种
ls-al /sbin/init

如果指向systemd的符号链接,就说明使用的是 systemd的现在方式
如果指向sysvinit的符号链接,就说明使用的是 service命令的传统方式

  • 很多服务包会同时提供这两种方式相关的文件

service (SysV Init 时代的工具)

它属于传统的 SysV Init 初始化系统。这是 systemd 出现之前,大多数 Linux 发行版使用的系统。

Init 系统按照顺序(从运行级别 0 到 6)串行地执行一系列位于 /etc/init.d/ 目录下的shell 脚本。这些脚本接受 start, stop, restart, status 等参数

service 命令的作用:它是一个统一的命令,用于调用这些 init.d 脚本,本质上是一个 包装器

  • 服务启动方式
# 传统方式,直接调用脚本sudo/etc/init.d/docker start# 使用 service 命令(更规范)sudoservicedocker start
  • 缺陷(在速度、依赖管理、日志、资源控制等方面的局限性)

串行启动:一个服务启动完再启动下一个,速度慢。
依赖关系复杂:通过脚本中的注释或特殊文件来定义,管理不便。
只管理进程:对进程以外的系统资源(如套接字、挂载点)管理能力弱

systemd(现代初始化系统)

它是一个 系统和服务管理器,不仅仅是 init 系统的替代品,更是一个庞大的项目,旨在统一和标准化 Linux 系统的引导和服务管理

  • 改进

并行启动:通过 Socket 激活、D-Bus 激活 等技术,最大程度地并行启动服务,极大地提升了启动速度。
基于单元的声明式配置:服务、挂载点、设备、套接字等都被抽象为 单元,由统一的配置文件(.service, .socket, .mount 等)定义。
强大的依赖管理:在单元文件中通过 Requires, Wants, After 等指令清晰定义依赖,systemd 会据此计算出最优启动顺序。
集成日志系统 journald:提供结构化的二进制日志,便于检索和过滤。
资源控制(cgroups)集成:可以方便地对服务使用的 CPU、内存、IO 等资源进行限制和监控

核心概念:单元

  • 单元是 systemd 管理资源的基本对象,由单元文件定义
/usr/lib/systemd/system/#软件包安装的默认单元文件。/etc/systemd/system/#系统管理员创建或覆盖的本地单元文件(优先级更高)

常见单元类型

.service
  • .service :最重要的类型, 代表一个服务和守护进程

单元配置语法格式 配置文件:包含执行命令、依赖、策略这些,systemd能看懂并执行

.socket
  • .socket: 一个 IPC 或网络套接字。可以实现“按需启动”,当有连接到达时才启动对应的 .service

是systemd 的一种优化设计,.socket负责监听网络接口或者本地套接字,当有请求时,再由.socket文件触发.service文件启动服务,好处是服务可以不用一致后台运行,有请求时再启动,可以节省系统资源

.mount / .automount
  • .mount / .automount:文件系统挂载点,如果想让有个硬盘分区或者网络存储,再系统启动时,自动挂载再指定目录,就可以用此来配置

.target
  • .target:一组单元的集合。管理启动流程的总开关(管依赖)

把一系列相关的服务和其他单元组织在一起,当前target启动后,意味者系统进入了该状态,也意味着它所包含和依赖的其他服务都已经启动好了

.timer
  • .timer:用于定时任务,替代传统的 cron

linux - crontab定时周期循环任务

.path
  • .path:基于文件或目录的变化来激活其他服务。

单元文件生效

  • 改了配置单元文件之后,需要执行重加载
sudosystemctl daemon-reload

核心工具 : systemctl

  • 启动/停止/重启/重载配置/查看状态
sudosystemctl start docker.service# 启动sudosystemctl stop docker.service# 停止sudosystemctl restart docker.service# 先停后启sudosystemctl reload docker.service# 不中断服务,重载配置(如果支持)sudosystemctl status docker.service# 详细信息,最重要!会显示日志片段和是否激活

  • 启用/禁用开机自启
sudosystemctlenabledocker.service# 创建符号链接到 .wants 目录sudosystemctl disable docker.service# 移除符号链接sudosystemctl is-enabled nginx.service# 检查是否启用
  • 查看所有单元/正在运行的服务
systemctl list-units --type=service systemctl list-units --type=service --state=running
  • 查看系统状态和最近日志
systemctl status

# 查看详细启动日志sudojournalctl -u docker.service# 查看 nginx 服务的所有日志

sudojournalctl -u docker.service -f# 实时追踪(-f follow)

sudojournalctl -u docker.service --since todaysudojournalctl -p err -b# 查看本次启动的所有错误日志

http://www.cnnetsun.cn/news/1505.html

相关文章:

  • 如何通过生成式引擎优化(GEO)提升品牌在AI搜索中的可见度?
  • Java Map 集合深度笔记(理论篇)
  • Java Collection 集合进阶知识笔记
  • C++11(五):类型转换全解析
  • LeetCode---环形链表 II
  • 打卡信奥刷题(2514)用C++实现信奥 P1950 长方形
  • 打卡信奥刷题(2515)用C++实现信奥 P1955 [NOI2015] 程序自动分析
  • 打卡信奥刷题(2516)用C++实现信奥 P1956 Sum
  • 计算广告:智能时代的营销科学与实践(三)
  • 计算广告:智能时代的营销科学与实践(四)
  • 如何将你的游戏发布到steam平台?
  • GIF帧分析工具
  • 12.10小结
  • 爬虫数据增量更新:时间戳、offset、WebSocket 长连接方案
  • Java-元注解 (Meta-Annotations)
  • @Component
  • 力扣-94.二叉树的中序遍历(Java递归)
  • 综合素质面试hr面
  • 降重与AIGC优化的认知任务解耦:八类工具在四项核心活动中的生态位映射与协同路径
  • PaperXie 降重复率/AI率功能如何化解学术写作中的“生成式焦虑”:一种面向“学术表达真实性”的智能协作框架——一位研究生的真实实践记录
  • 科研文稿 “学术查重的降噪滤波器”:PaperXie 降重降 AI 率如何让重复文本从 “信号杂音” 变 “导师认可的纯净成果”
  • 八款 AI 文本优化工具能力棱镜:基于“语义保真—AI消除—学科适配—流程嵌入”四维模型的八工具全景评估
  • 论文查重 / AI 检测总超标?PaperXie 用 “学术表达重塑法” 帮你把重复率 / AI 率压到安全线内
  • 构建你的“学术表达合规生态”:八款降重/AIGC工具如何在不同场景中协同降低检测风险?
  • PaperXie 数据分析功能如何重塑科研决策支持:一种面向“从数据到洞见”闭环构建的智能协作框架——一位研究生的真实实践记录
  • 论文数据分析总卡壳?PaperXie 用 “数据逻辑锚定法” 帮你从 “乱数堆” 里挖出研究结论
  • 50天50个小项目 (React19 + Tailwindcss V4) ✨| FAQ Collapse(问题解答折叠面板)
  • 《Mysql数据库应用》 第2版 郭文明 实验2 数据查询操作 答案
  • 同样是单片机工程师,高段位的已经在“定义智能”,新手还在跟LED死磕?
  • STM32居然能和服务器“聊天”?MQTT通信实现指南,小白也能看懂!