linux使用系统管理服务(RedHat)

3.1系统介绍

Systemd 是 Linux 操作系统的系统和服务管理器。它旨在向后兼容 SysV init 脚本,并提供一些功能,如系统服务在启动时并行启动、守护进程的按需激活或基于依赖关系的服务控制逻辑。从 Red Hat Enterprise Linux 7 开始,systemd 取代 Upstart 成为默认的 init 系统。
Systemd 引入了 systemd 单元的概念。这些单元由单元配置文件表示,位于以下表中列出的一个目录中。

目录

描述

/usr/lib/systemd/system/

安装的 RPM 包中分发的 Systemd 单元文件。

/run/systemd/system/

运行时创建的 Systemd 单元文件。此目录优先于安装服务单元文件的目录。

/etc/systemd/system/

由 systemctl enable 创建的 Systemd 单元文件,以及用于扩展服务的单元文件。此目录优先于运行时单元文件的目录。

这些单元封装了有关以下信息的内容:

系统服务

监听套接字

其他与 init 系统相关的对象

有关可用 systemd 单元类型的完整列表,请参见下表。

表3.2 可用的systemd单元类型

单元类型

文件扩展名

描述

Service单元

.service

系统服务。

Target单元

.target

一组systemd单元。

Automount单元

.automount

文件系统自动挂载点。

Device单元

.device

内核识别的设备文件。

Mount单元

.mount

文件系统挂载点。

Path单元

.path

文件系统中的文件或目录。

Scope单元

.scope

外部创建的进程。

Slice单元

.slice

分层组织单元的一组系统进程。

Socket单元

.socket

进程间通信套接字。

Swap单元

.swap

交换设备或交换文件。

Timer单元

.timer

systemd定时器。

通过system.conf覆盖默认的systemd配置

systemd的默认配置是在编译期间定义的,可以在/systemd/system.conf中找到。如果要偏离这些默认值并全局覆盖systemd单元的选定默认值,请使用此文件。

例如,要覆盖超时限制的默认值(设置为90秒),请使用DefaultTimeoutStartSec参数以秒为单位输入所需值。

DefaultTimeoutStartSec=所需值

有关更多信息,请参阅示例3.20“更改超时限制”。

3.1.1. 主要特性

systemd 系统和服务管理器提供以下主要特性:

基于套接字的激活 — 在启动时,systemd 为所有支持此类激活的系统服务创建监听套接字,并在启动这些服务后立即将套接字传递给它们。这不仅允许 systemd 并行启动服务,还使得在不丢失任何消息的情况下重新启动服务成为可能:对应的套接字仍然可访问,所有消息都被排队等待。

systemd 使用套接字单元进行基于套接字的激活。

基于总线的激活 — 使用 D-Bus 进行进程间通信的系统服务可以在首次客户端应用程序尝试与它们通信时按需启动。systemd 使用 D-Bus 服务文件进行基于总线的激活。

基于设备的激活 — 支持基于设备的激活的系统服务可以在特定类型的硬件插入或变为可用时按需启动。systemd 使用设备单元进行基于设备的激活。

基于路径的激活 — 支持基于路径的激活的系统服务可以在特定文件或目录更改其状态时按需启动。systemd 使用路径单元进行基于路径的激活。

挂载点和自动挂载点管理 — systemd 监控和管理挂载点和自动挂载点。systemd 使用挂载单元进行挂载点管理,并使用自动挂载单元进行自动挂载点管理。

激进的并行化 — 由于使用基于套接字的激活,systemd 可以在所有监听套接字就位后立即并行启动系统服务。与支持按需激活的系统服务结合使用,平行激活显著减少了启动系统所需的时间。

事务性单元激活逻辑 — 在激活或停用单元之前,systemd 计算其依赖关系,创建临时事务,并验证该事务是否一致。如果事务不一致,systemd 将自动尝试纠正它并在报告错误之前从中删除非必要的作业。

与 SysV init 的向后兼容性 — systemd 支持 SysV init 脚本,如 Linux 标准基准核心规范 中所述,这简化了升级到 systemd 服务单元的路径。

3.1.2. 兼容性变更

systemd 系统和服务管理器被设计为与 SysV init 和 Upstart 大部分兼容。以下是与使用 SysV init 的 Red Hat Enterprise Linux 6 系统相关的最显著的兼容性变更:

Systemd 对运行级别的支持有限。它提供了许多目标单元,可以直接映射到这些运行级别,出于兼容性的原因,它还分发了早期的 runlevel 命令。然而,并非所有 systemd 目标都可以直接映射到运行级别,因此,此命令可能返回 N 来指示未知的运行级别。建议尽量避免使用 runlevel 命令。
有关 systemd 目标及其与运行级别的比较的更多信息,请参见“3.3 节,使用 systemd 目标”。

systemctl 实用程序不支持自定义命令。除了标准命令如 start、stop 和 status 外,SysV init 脚本的作者可以实现对任意数量的任意命令的支持,以提供额外的功能。例如,iptables 的 init 脚本可以使用 panic 命令执行,该命令立即启用 panic 模式并重新配置系统以开始丢弃所有传入和传出的数据包。systemd 不支持此功能,systemctl 只接受文档化的命令。
有关 systemctl 实用程序及其与早期服务实用程序的比较的更多信息,请参见“表 3.3,service 实用程序与 systemctl 的比较”。

systemctl 实用程序不与未由 systemd 启动的服务通信。当 systemd 启动系统服务时,它会将其主进程的 ID 存储起来以跟踪它。然后,systemctl 实用程序使用此 PID 查询和管理服务。因此,如果用户直接在命令行上启动特定的守护程序,则 systemctl 无法确定其当前状态或停止它。

systemd 仅停止运行的服务。以前,在启动关机序列时,Red Hat Enterprise Linux 6 和更早版本的系统使用位于 /etc/rc0.d/ 目录中的符号链接来停止所有可用的系统服务,而不考虑它们的状态。使用 systemd,仅在关闭时停止运行的服务。

系统服务无法从标准输入流中读取。当 systemd 启动一个服务时,它将其标准输入连接到 /dev/null 以防止与用户的任何交互。

系统服务不继承任何上下文(例如 HOME 和 PATH 环境变量)从调用用户和他们的会话中。每个服务在一个干净的执行环境中运行。

在加载 SysV init 脚本时,systemd 读取 Linux 标准基础(LSB)头中编码的依赖信息,并在运行时解释它。

所有服务单元的操作都受到默认超时限制为 5 分钟的限制,以防止一个功能失常的服务冻结系统。这个值是为从 initscripts 生成的服务硬编码的,并且不能更改。但是,可以使用单独的配置文件为每个服务指定更长的超时值,请参见“示例 3.20,更改超时限制”。

有关 systemd 引入的兼容性变更的详细列表,请参阅 Red Hat Enterprise Linux 7 的迁移规划指南。

3.2. 管理系统服务

之前的 Red Hat Enterprise Linux 版本使用 SysV init 或 Upstart,并在 /etc/rc.d/init.d/ 目录中放置 init 脚本来管理系统服务。这些 init 脚本通常使用 Bash 编写,允许系统管理员控制系统中服务和守护进程的状态。从 Red Hat Enterprise Linux 7 开始,这些 init 脚本已被服务单元取代。
服务单元以 .service 文件扩展名结尾,与 init 脚本的作用类似。要查看、启动、停止、重启、启用或禁用系统服务,请使用 systemctl 命令,如本节中的服务实用程序与 systemctl 比较所述,以及进一步的描述。服务和 chkconfig 命令仍然可用于系统,并按预期工作,但仅出于兼容性考虑而包含,并应避免使用。

表3.3 服务实用程序与 systemctl 比较

service

systemctl

描述

service name start

systemctl start name.service

启动服务。

service name stop

systemctl stop name.service

停止服务。

service name restart

systemctl restart name.service

重新启动服务。

service name condrestart

systemctl try-restart name.service

仅当服务正在运行时重新启动服务。

service name reload

systemctl reload name.service

重新加载配置。

chkconfig

systemctl

描述

chkconfig name on

systemctl enable name.service

启用服务。

chkconfig name off

systemctl disable name.service

禁用服务。

chkconfig --li

  • 17
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值