Linux系统服务介绍

服务是常驻在内存中的程序,并且可以提供一些网络或服务功能,英文称为service。

systemd配置目录

从 CentOS 7.x 以后,Red Hat系列放弃了一直使用的init启动脚本的方式管理服务,改用systemd 这个启动服务管理机制。该机制的好处有:

  • 平行处理服务,加速开机流程,systemd可以让所有的服务同时启动。

  • 服务依赖性自我检查。

  • 对服务依据功能进行分类,将多个服务集合成一个群组。

systemd 将过去执行脚本通通称为一个服务单位 (unit)。每种服务单位依据功能来区分时,就分类为不同的类型 (type)。

基本的类型有包括

  • 系统服务

  • 数据监听与交换的插槽档服务 (socket)

  • 储存系统状态的快照类型

  • 提供不同类似执行等级分类的操作环境 (target)

systemd配置目录有以下三种:

  • /usr/lib/systemd/system/:每个服务最主要的启动脚本设置

  • /run/systemd/system/:系统执行过程中所产生的服务脚本,这些脚本的优先级要比
    /usr/lib/systemd/system/ 高

  • /etc/systemd/system/:管理员依据主机系统的需求所创建的执行脚本,执行优先级又比 /run/systemd/system/ 高

/etc/systemd/system/ 目录下存放的是需要开机执行的服务,该目录下有大量的链接文件,链接到/usr/lib/systemd/system/目录下,该目录下的文件才是systemd实际启动的服务脚本文件。

在这里插入图片描述

systemd 服务单元(unit)分类

上面说到根据不同的功能,服务单元被分为不同的类型,可以根据服务脚本文件的扩展名来区分为以下几种。

在这里插入图片描述

其中.service 的系统服务类型最为常见。

使用systemctl 管理服务

systemd 启动服务的机制,主要通过 systemctl 指令来处理。

1
2
3
4
5
6
7
8
9
10
11
[root@study ~]# systemctl [command] [unit]
command 主要有:
start :立刻启动后面接的 unit
stop :立刻关闭后面接的 unit
restart :立刻关闭后启动后面接的 unit,亦即执行 stop 再 start 的意思
reload :不关闭后面接的 unit 的情况下,重新载入配置文件,让设置生效
enable :设置下次开机时,后面接的 unit 会被启动
disable :设置下次开机时,后面接的 unit 不会被启动
status :目前后面接的这个 unit 的状态,会列出有没有正在执行、开机默认执行否、登录等信息等!
is-active :目前有没有正在运行中
is-enable :开机时有没有默认要启用这个 unit

查看当前服务状态

使用systemctl status命令可以查看当然服务的状态。其中的状态含义如下:

  • Loaded:该行表示此服务是否会开机启动,enabled表示开机启动,disabled表示不启动,vendor preset表示第一次安装时的预设值。

  • Active:现在这个服务单元的状态是正在执行 (running) 或没有执行 (dead)

Active除了 running 跟 dead 之外,还有其他几个基本的状态:

  • active (running):正有一只或多只程序正在系统中执行的意思

  • active (exited):仅执行一次就正常结束的服务,目前并没有任何程序在系统中执行。

  • active (waiting):正在执行当中,不过还再等待其他的事件才能继续处理。

  • inactive:这个服务目前没有运行。

Loaded的状态还有:

  • enabled:这个 服务将在开机时被执行

  • disabled:这个 daemon 在开机时不会被执行

  • static:这个 daemon 不可以自己启动 (enable 不可),不过可能会被其他的 enabled
    的服务来唤醒

  • mask:这个 daemon 无论如何都无法被启动!因为已经被强制注销 (非删除)。

在这里插入图片描述

查看系统中的存在的服务

使用 list-units 命令查看当然启动的服务, list-unit-files查看已安装的服务,命令如下

1
2
3
4
5
[szp@study ~]# systemctl [command] [--type=TYPE] [--all]
command:
list-units :依据 unit 列出目前有启动的 unit。若加上 --all 才会列出没启动的。
list-unit-files :依据 /usr/lib/systemd/system/ 内的文件,将所有文件列表说明。
--type=TYPE:就是之前提到的 unit type,主要有 service, socket, target 等

在这里插入图片描述

systemctl命令不加参数等同于 systemctl list-units,打印结果中各列的含义如下:

  • UNIT :项目的名称,包括各个 unit 的类别

  • LOAD :开机时是否会被载入,默认 systemctl 显示的是有载入的项目而已

  • ACTIVE :目前的状态,须与后续的 SUB 搭配!就是用 systemctl status 观察时,active 的项目

  • DESCRIPTION :详细描述

使用systemctl list-unit-files列出已经安装的服务。

在这里插入图片描述

使用以下命令systemctl list-units –type=service –all筛选service类别的服务。

在这里插入图片描述

查看服务之间的依赖性

1
2
systemctl list-dependencies [unit] [--reverse]
--reverse :反向追踪谁使用这个服务单元

命令执行结果如下图所示。

在这里插入图片描述

systemctl 针对 service 类型的配置文件

systemd 的配置文件大部分放置在/usr/lib/systemd/system/ 目录内,该目录存放软件默认的配置,不建议修改。修改的配置文件应该放置在 /etc/systemd/system/ 目录下。

以vsftpd.service为例,如果要对其进行修改,可以在以下目录中进行操作。

  • /usr/lib/systemd/system/vsftpd.service:官方的默认配置文件;

  • /etc/systemd/system/vsftpd.service.d/custom.conf:在 /etc/systemd/system 下面创建与配置文件相同文件名的目录,但是要加上 .d 的扩展名。然后在该目录下创建配置文件即可。配置文件后缀最好为 .conf 。该目录下的文件会附件进入入/usr/lib/systemd/system/vsftpd.service

  • /etc/systemd/system/vsftpd.service.wants/*:此目录内的文件为链接文件,设置依赖服务的链接。意思是启动了 vsftpd.service 之后,最好再启动这目录下面建议的服务。

  • /etc/systemd/system/vsftpd.service.requires/*:此目录内的文件为链接文件,设置依赖服务的链接。意思是在启动 vsftpd.service 之前,需要事先启动哪些服务的意思。

在这里插入图片描述

配置文件编写格式

了解了配置文件放置的目录,下面来看配置文件本身的格式定义。

以sshd.service为例,查看其文件内容如下,文件由一个个中括号表示的项组成。设置项通常是可以重复的,后面的设置会取代前面的。空白行、开头为 # 或 ; 的那一行,都代表注解。如果设置参数需要有“是/否”的项目 (布林值, boolean),你可以使用 1, yes, true, on 代表启动,用 0, no, false, off 代表关闭。

在这里插入图片描述

  • [Unit]: unit 本身的说明,以及与其他相依 daemon 的设置,包括在什么服务之后才启动此 unit 之类的设置值;

  • [Service], [Socket], [Timer], [Mount], [Path]..:不同的 unit type 就得要使用相对应的设置项。当前是 sshd.service 为例,所以使用 [Service] 来设置。 主要在规范服务启动的脚本、环境配置文件文件名、重新启动的方式等等。

  • [Install]:这个项表示将此 unit 安装到哪个 target 里面。

下面对每个项中的设置细则进行介绍。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

参考文献:《鸟哥的Linux私房菜:基础学习篇 第四版》

PS:前往公众号“Linux工坊”,可以查看最新内容!关注即可免费领取面试&Linux技术书籍!

------ 本文结束------
  • 文章标题: Linux系统服务介绍
  • 本文作者: 你是我的阳光
  • 发布时间: 2022年01月11日 - 15:56:45
  • 最后更新: 2022年11月07日 - 16:45:00
  • 本文链接: https://szp2016.github.io/Linux/Linux系统服务介绍/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
0%