Linux 系统中的 systemd 是一个现代的初始化系统(init system)和服务管理器,用于替代传统的 SysVinit 和 Upstart。它负责系统的启动、服务管理、进程监控、日志记录、挂载文件系统等核心功能,并广泛应用于大多数主流 Linux 发行版(如 Ubuntu、Fedora、CentOS 等)。


systemd 的核心功能

  1. 系统初始化
    作为系统的第一个进程(PID=1),systemd 负责启动其他所有进程和服务,并管理它们的依赖关系。
  2. 服务管理
    通过 systemctl 命令管理服务(启动、停止、重启、状态查看、开机自启等)。
  3. 并行启动
    支持服务的并行启动,显著缩短系统启动时间。
  4. 依赖管理
    自动处理服务之间的依赖关系,确保正确的启动顺序。
  5. 日志管理
    通过 journald(systemd 的日志组件)集中管理日志,支持结构化查询。
  6. 资源监控
    可设置资源限制(如 CPU、内存)和进程监控(自动重启崩溃的服务)。
  7. 其他功能
    管理定时任务(替代 cron)、挂载文件系统、管理网络配置等。

systemd 的配置文件目录

systemd 的配置文件(称为 单元文件,Unit Files)分布在多个标准目录中,优先级从高到低依次为:

  1. 系统管理员自定义配置
    • /etc/systemd/system/
      存放系统管理员手动添加或覆盖的单元文件(优先级最高)。
  2. 运行时动态配置
    • /run/systemd/system/
      存放系统运行时生成的临时单元文件(重启后失效)。
  3. 软件包安装的默认配置
    • /usr/lib/systemd/system/
      存放系统或软件包(如通过 apt 或 yum 安装)提供的默认单元文件。
  4. 用户级配置(可选)
    • ~/.config/systemd/user/
      存放当前用户的单元文件(仅影响用户级服务)。

单元文件类型

单元文件以 .service.socket.timer 等后缀区分类型,例如:

  • .service:定义服务(如 Nginx、MySQL)。
  • .target:定义系统启动目标(类似 SysVinit 的运行级别)。
  • .timer:替代 cron 的定时任务。
  • .mount:定义文件系统挂载点。

  1. 管理服务
    systemctl start nginx.service # 启动服务
    systemctl stop nginx.service # 停止服务
    systemctl enable nginx.service # 启用开机自启
    systemctl status nginx.service # 查看状态
  2. 查看单元文件路径
    systemctl show nginx.service -p FragmentPath
    # 输出示例:FragmentPath=/usr/lib/systemd/system/nginx.service
  3. 重载配置
    修改单元文件后需执行:
    systemctl daemon-reload

总结

  • systemd 是 Linux 的核心初始化系统和服务管理工具。
  • 配置文件位于 /etc/systemd/system/(自定义)、/usr/lib/systemd/system/(默认)等目录。
  • 使用 systemctl 命令管理服务,通过单元文件定义服务行为。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注