一、CentOS7 systemd 介绍

在 CentOS7 中,使用 systemd 来管理其他服务是否开机启动,systemctl 是 systemd 服务的命令行工具

[root@localhost ~]$ systemctl start httpd.service         # 启动服务
[root@localhost ~]$ systemctl stop httpd.service          # 关闭服务
[root@localhost ~]$ systemctl restart httpd.service       # 重启服务
[root@localhost ~]$ systemctl status httpd.service        # 查看服务状态
[root@localhost ~]$ systemctl is-enabled httpd.service    # 查看指定的服务是否开机启动
[root@localhost ~]$ systemctl enable httpd.service        # 设置指定的服务开机启动
[root@localhost ~]$ systemctl disable httpd.service       # 设置指定的服务开机不启动

 

二、CentOS7 unit 介绍

(1) CentOS7 中新增了 unit(单元)的概念,它是系统所有资源的统称,不同的资源称为不同的 unit(单元)
(2) 常见的 unit 有:Service Unit ( 系统服务 ) 、Device Unit ( 硬件设备 ) 、Path Unit ( 文件或路径 ) 等等
(3) Systemd 用来管理这些单元,它保存了系统服务、硬件设备、挂载点等单元的配置文件,并能够处理不同单元之间的依赖关系
(4) 单元的状态:active 、inactive 、activing 、deactiving ,分别表示正在运行 、已经停止运行 、正在启动 、正在停止

[root@localhost ~]$ systemctl list-units                        # 列出正在运行的unit
[root@localhost ~]$ systemctl list-units --all                  # 列出所有状态的unit
[root@localhost ~]$ systemctl list-units --all --state=active   # 列出指定状态的unit
[root@localhost ~]$ systemctl list-units --type=service         # 列出指定类型的unit

 

三、CentOS7 target 介绍

(1) target 其实就是一组 unit 组合,CentOS7 的 target 相当于 CentOS6 的 runlevel ( 运行级别 ) ,启动一个 target,就相当于启动多个 unit
(2) 一个 service 属于一种类型的 unit ,多个 unit 可以组成一个 target ,一个 target 包含了多个 service

[root@localhost ~]$ ll /usr/lib/systemd/system/
lrwxrwxrwx. 1 root root   15 1月  15 10:39 runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root   13 1月  15 10:39 runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root   17 1月  15 10:39 runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root   17 1月  15 10:39 runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root   17 1月  15 10:39 runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root   16 1月  15 10:39 runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root   13 1月  15 10:39 runlevel6.target -> reboot.target
[root@localhost ~]$ systemctl get-default                            # 查看当前系统默认的target
[root@localhost ~]$ systemctl list-unit-files --type=target          # 列出所有target
[root@localhost ~]$ systemctl list-dependencies multi-user.target    # 查看指定target下有哪些unit