文章目录
简介
系统启动和服务器进程由systemd系统和服务管理器进行管理。此程序提供了一种方式,可以在启动时和运行中的系统上激活系统资源,服务器守护进程和其他进程。
后台程序是在执行各种任务的后台等待或运行的进程。一般情况下,守护进程在系统启动时自动启动并持续运行至关机或被手动停止。按照惯例,许多守护进程的名称以字母‘d’结束
为了侦听连接,守护进程使用套接字。这是与本地或远程客户端的主要通信通道。套接字可能能由守护进程创建,或者可能从守护进程隔开并通过另一进程创建,如systemd。当客户端建立连接时,套接字传递到守护进程。
所谓服务,它通常指的是一个或多个进程,但启动或停止一项服务可能会对系统的状态进行一次性更改,不会留下守护进程之后继续运行(称为oneshot)
在Red Hat Enteprise Linux 7中,进程ID 1 属于systemd这一新的init系统,以下是systemd提供的几项新功能:
- 并行化功能,它可以提高系统的启动速度
- 按需启动守护进程,而不需要单独的服务
- 自动服务依赖关系管理,可以防止长时间超时,例如在网络不可用时不启动网络服务
- 利用Linux控制组一起追踪相关进程的方式
systemctl和systemd单元
systemctl命令用于管理各种类型的systemd对象,它们称为单元。可以通过systemctl -t help 命令显示可用单元类型的列表。
下方列出了一些常用单元类型:
- 服务单元具有 .service扩展名,代表系统服务。这种单元用于启动经常访问的守护进程,如web服务器
- 套接字单元 .socket 扩展名,代表进程间通信(IPC)套接字。套接字的控制可以在建立客户端连接时传递到守护进程或新启动的服务。套接字单元用于延迟系统启动时的服务启动,或者按需启动不常用的服务。这原则类似于使用xinetd超级服务器按需启动的服务。
- 路劲单元具有 .path 扩展名,用于将服务的激活推迟到特定文件系统更改发生之后。这通常用于使用假脱机目录的服务,如打印系统。
服务状态
可以通过systemctl status name.type 查看服务的状态。如果为提供单元类型,则systemcl将显示服务单元的状态(如果存在)。
状态输出中可以找到表示服务状态的几个关键字:
关键词 | 描述 |
---|---|
loaded | 单元配置文件已处理 |
active(running) | 正在通过一个或多个持续进程运行 |
active(exited) | 已成功完成一次性配置 |
active(waiting) | 运行中,但在等待事件 |
inactive | 不在运行 |
enabled | 将在系统启动时启动/ |
disabled | 不会在系统启动时启动 |
静态 | 无法启动,但可以由某一启动的单元自动启动 |
列出单元文件systemctl
- 查询所有单元的状态,以验证系统启动
- 仅查询服务单元的状态
- 调查处于失败或维护状态的任何单元。可以选择添加 -l 选项以显示完整的输出
- 也可以使用status参数来判断特定的单元是否活动,以及显示该单元是否已启用在系统启动时启动。其他备用命令也可轻松显示活动和已启用状态:
5. 列出所有已加载单元的活动状态。也可以选择限制单元类型。- -all选项可加入不活动的单元。
6. 查看所有单元的已启用和已禁止设置。也可以选择限制单元类型。
7. 进查看失败的服务
- 浏览chronyd服务的状态。此服务用于网络时间同步(NTP),记下任何活动守护进程的进程ID
- 浏览sshd服务的状态。此服务用于系统间的安全加密通信
9.1确定sshd服务是否已启用在系统启动时启动
9.2 确定sshd服务是否活动,但不显示所有状态信息
9.3 显示sshd服务的状态
控制系统服务
- 查看服务的状态
- 验证进程正在运行
- 停止服务并验证其状态
- 启动服务并查看其状态。进程ID已经改变
- 以单一命令停止服务,然后在启动该服务。
- 发出指示使服务读取和重新加载其配置文件,而不完全停止和启动服务。进程ID不会改变。
单元依赖项
服务可能会以其他服务依赖项的形式启动。如果套接字单元已启用,但名称相同的服务单元没有启动,对该网络套接字发出请求时将自动启动该服务。服务也可能会在满足文件系统条件时由路径单元触发。例如,文件放入到打印假脱机目录时,如果cups打印服务未在运行,就会导致启动该服务。
要在系统上彻底停止打印服务,请停止所有三个单元。禁用服务将禁用其依赖项。
systemctl list-dependencies UNIT 命令可以用于打印出启动指定单元时必须要启动的其他单元的树型列表。根据确切的依赖关系,其他单元可能需要在指定单元启动之前或之后运行。此命令的 - - reverce选项将显示哪些的单元必须要在指定单元启动后才能运行。
屏蔽服务
有时,系统中可能安装了互相冲突的服务。例如,可以通过多种方法管理网络(network和NetworkManager)防火墙(iptables和firewalld)。为了防止管理员意外启动某一服务,可以将该服务屏蔽。屏蔽将在配置目录中创建链接,使得启动该服务时什么也不会发生。
重要
禁用的服务不会在系统启动时自动启动,也不会被其他单元文件启动,但可以手动启动。屏蔽的服务无法手动启动,也不会自动启动。
使系统守护进程在系统启动时启动或停止
在运行中的系统上启动一项服务不能确保该服务在系统重新启动时启动。类似的,在运行中的系统上停止一项服务也不能防止它在系统重新启动时再次启动。当相应的systemd配置目录中创建由链接时,服务会在系统启动时启动。这些链接可以通过systemctl命令创建和删除。
- 查看服务的状态。
- 禁用服务并验证其状态。请注意禁用服务不会停止该服务
- 启用服务并验证其状态
systemctl 命令摘要
命令 | 任务 |
---|---|
systemctl status UNIT | 查看有关单元状态的详细信息 |
systemctl stop UNIT | 在运行中的系统上停止一项服务 |
systemctl start UNIT | 在运行中的系统上启动一项服务 |
systemctl restart UNIT | 在运行中的系统上重新启动一项服务 |
systemctl reload UNIT | 重新加载运行中服务的配置文件 |
systemctl mask UNIT | 彻底禁用服务,使其无法手动启动或在系统启动时启动 |
systemctl unmask UNIT | 使屏蔽的服务变得可用 |
systemctl enable UNIT | 将服务配置为在系统启动时启动 |
systemctl disable UNIT | 禁止服务在系统启动时启动 |
systemctl list-dependencies UNIT | 列出指定单元需要的单元 |
使用systemctl管理服务
- 验证chronyd服务正在运行
- 停止chronyd服务,再次查看其状态
- 确定chronyd服务是否已启用在系统启动时启动(启用)
- 重新启动系统,然后查看chronyd服务状态
- 禁用chronyd服务,以便其不在系统启动时启动,然后查看该服务的状态
控制服务和守护进程
- 启动psacct
- 配置psacct服务,使其在系统启动时启动
- 停止rsyslog服务
- 配置rsyslog服务,使其不在系统启动时启动。