现在在市场上做网站怎么样,phpcms网站logo,淘宝属于什么网站怎么做,网络服务采购系列文章目录 Linux内核学习 Linux 知识#xff08;1#xff09; Linux 知识#xff08;2#xff09; WSL Ubuntu QEMU 虚拟机 Linux 调试视频 PCIe 与 USB 的补充知识 vscode 使用说明 树莓派 4B 指南 设备驱动畅想 Linux内核子系统 Linux 文件系统挂载 QEMU 通过网络实现…
系列文章目录 Linux内核学习 Linux 知识1 Linux 知识2 WSL Ubuntu QEMU 虚拟机 Linux 调试视频 PCIe 与 USB 的补充知识 vscode 使用说明 树莓派 4B 指南 设备驱动畅想 Linux内核子系统 Linux 文件系统挂载 QEMU 通过网络实现共享文件 OrangePi 学习摘录 —— 制作桌面版镜像 Radxa 学习摘录 Rockchip RK3399 - 引导流程和准备工作 制作Ubuntu根文件 制作RK3568 ubuntu20.04桌面版镜像 Rockchip RK3399 - 移植ubuntu 20.04.4根文件系统 文章目录 系列文章目录1、init 启动方式2、相关目录介绍3、systemd 工作流程1. 启动阶段2. 加载配置文件3. 确定运行模式4. 启动基础服务5. 启动目标服务6. 服务管理7. 日志管理8. 资源控制9. 故障恢复总结 4、写一个 systemd 配置文件1. 创建服务单元文件2. 编写服务配置3. 配置文件解析4. 加载并启动服务5. 注意事项 1、init 启动方式
init 进程启动后负责初始化用户空间的系统服务和应用程序 SysV init传统方式 从 /etc/inittab 文件读取配置确定默认运行级别如多用户模式或图形界面模式。 启动基本系统服务如网络服务、系统日志、用户登录服务getty 等。 systemd现代主流方式Ubuntu 从 15.04 开始默认使用 系统大部分组件被建模为 systemd 服务。 通过目标单元如 multi-user.target 或 graphical.target协调服务启动顺序。 自动优化启动流程减少依赖和启动时间。
2、相关目录介绍
以下是 systemd 功能相关的目录介绍
/usr/lib/systemd/system
用途 存放由软件包安装的 systemd 单元文件包括各种服务.service、目标.target、挂载.mount等单元文件。特点 该目录下的配置文件是由软件包管理器如 apt、rpm 等安装软件时自动放置的通常不需要用户手动修改。它为系统提供了各种预定义的服务和功能配置。
/run/systemd/system
用途 存放系统运行时动态生成的单元文件。这些文件通常是在系统运行过程中由各种服务或进程根据需要创建的。特点 该目录下的配置文件具有中等优先级一般很少被手动修改除非需要调整程序运行时的一些参数即 Session 级别的参数。
/etc/systemd/system
用途 存放系统管理员自定义的 systemd 单元文件或者通过 systemctl enable 命令创建的开机启动服务的符号链接。特点 该目录下的配置文件优先级最高如果同一选项在多个目录中都配置了这里的配置会覆盖其他目录的配置。系统管理员可以在此目录中创建自己的单元文件或者通过符号链接的方式启用或禁用服务。
/lib/systemd/system
用途 与 /usr/lib/systemd/system 目录相同用于存放软件包安装的 systemd 单元文件。特点 在许多 Linux 系统中/lib 目录实际上是 /usr/lib 的符号链接因此这两个目录在实际使用中是等价的。
3、systemd 工作流程
systemd 是现代 Linux 系统中广泛使用的初始化系统和服务管理器负责在系统启动时管理和启动各种服务、资源和进程。以下是 systemd 的工作流程
1. 启动阶段
内核启动 systemd 内核加载完成后会启动第一个用户空间进程 systemdPID1。systemd 是现代 Linux 系统的初始化进程取代了传统的 init 进程。systemd 会读取配置文件如 /etc/systemd/system/default.target确定系统的默认运行模式如多用户模式或多用户图形界面模式。
2. 加载配置文件
系统初始化配置 systemd 从 /etc/systemd/system.conf 文件中加载系统初始化配置包括系统的运行模式、默认的依赖关系模式等。 单元文件查找 系统启动时systemd 首先会读取 /etc/systemd/system、/usr/lib/systemd/system 和 /run/systemd/system 目录中的单元文件例如 .service、.target、.socket 等。其中 /etc/systemd/system优先级最高存放系统管理员自定义或使用 systemctl enable 启用的单元文件。/usr/lib/systemd/system存放软件包安装的默认单元文件。/run/systemd/system存放系统运行时生成的临时单元文件。
3. 确定运行模式
运行模式Target systemd 使用 target 来定义系统的运行模式。常见的 target 包括 multi-user.target多用户命令行模式。graphical.target图形化多用户模式。 默认运行模式由 /etc/systemd/system/default.target 文件指定。
4. 启动基础服务
基础服务启动 systemd 会启动一些基础服务如 udev管理设备节点。systemd-logind管理用户会话。systemd-journald管理日志系统。 这些服务是系统运行的基础设施必须优先启动。
5. 启动目标服务
根据 target 启动服务 systemd 会根据目标 target 文件如 multi-user.target 或 graphical.target启动相关服务。服务的配置文件通常位于 /etc/systemd/system/target.wants/ 目录下。服务启动时systemd 会自动解析服务之间的依赖关系并按需并行启动服务。
6. 服务管理 服务生命周期管理 systemd 提供了 systemctl 命令来管理服务例如 systemctl start service启动服务。systemctl stop service停止服务。systemctl restart service重启服务。systemctl status service查看服务状态。 开机自启管理 通过 systemctl enable service 和 systemctl disable service 命令可以启用或禁用服务的开机自启动。
7. 日志管理
日志记录 systemd-journald 负责记录系统日志日志存储在内存和磁盘中便于快速查询。 日志查询 使用 journalctl 命令可以查看日志例如 journalctl -u service查看指定服务的日志。journalctl -b查看本次启动的日志。journalctl -f实时查看最新日志。
8. 资源控制
资源隔离 systemd 使用控制组cgroups来隔离和限制服务的资源使用例如内存、CPU 等。 沙盒运行 可以通过配置文件中的选项如 ProtectSystemstrict 和 PrivateTmptrue增强服务的安全性。
9. 故障恢复
自动重启服务 在服务配置文件中设置 Restarton-failure当服务崩溃时systemd 会自动重启服务。
总结
systemd 的工作流程包括从系统启动到服务管理的全过程其核心特点是
并行启动通过并行启动服务显著缩短系统启动时间。依赖管理自动解析服务之间的依赖关系确保服务按正确顺序启动。统一管理通过 systemctl 和 journalctl 命令提供了一致的服务和日志管理接口。
4、写一个 systemd 配置文件
systemd 使用单元文件unit files来管理各种系统资源。以下是一个简单的自定义服务配置示例我们将创建一个名为 my-custom-service.service 的服务。
1. 创建服务单元文件
在 /etc/systemd/system/ 目录下创建一个新的单元文件例如/etc/systemd/system/my-custom-service.service 。
2. 编写服务配置
打开文件并添加以下内容
[Unit]
DescriptionMy Custom Service
Afternetwork.target[Service]
Typesimple
Usermyuser
ExecStart/path/to/my/script.sh
ExecReload/bin/kill -HUP $MAINPID
ExecStop/bin/kill $MAINPID
Restarton-failure
RestartSec5s[Install]
WantedBymulti-user.target3. 配置文件解析 [Unit] 节 Description服务的简短描述。After指定该服务在 network.target 后启动表示该服务依赖于网络服务。 [Service] 节 Type定义服务类型simple 表示服务启动后立即进入主进程。User指定服务运行的用户。ExecStart启动服务时执行的命令。ExecReload重新加载服务时执行的命令此处示例为发送 HUP 信号。ExecStop停止服务时执行的命令。Restart指定服务在失败时的重启策略on-failure 表示服务失败时自动重启。RestartSec设置重启服务前的等待时间。 [Install] 节 WantedBy指定该服务对应的目标targetmulti-user.target 表示在多用户模式下启动。
4. 加载并启动服务
重新加载 systemd 配置
sudo systemctl daemon-reload启动服务
sudo systemctl start my-custom-service设置开机自启
sudo systemctl enable my-custom-service检查服务状态
sudo systemctl status my-custom-service5. 注意事项
路径和权限确保 ExecStart 指定的脚本路径正确并且脚本具有可执行权限。日志查看使用 journalctl -u my-custom-service 查看服务日志便于排查问题。调试如果服务启动失败可以查看 /var/log/journal 中的系统日志。
通过以上步骤你可以创建并配置一个自定义的 systemd 服务。