显示某个 Unit 是否正在运行
# systemctl is-active application.service
显示某个 Unit 是否处于启动失败状态
# systemctl is-failed application.service
显示某个 Unit 服务是否建立了启动链接
# systemctl is-enabled application.service
4、依赖关系
Unit 之间存在依赖关系:A 依赖于 B,就意味着 Systemd 在启动 A 的时候,同时会去启动 B。
#systemctl list-dependencies命令列出一个 Unit 的所有依赖。
# systemctl list-dependencies nginx.service
上面命令的输出结果之中,有些依赖是 Target 类型(详见下文),默认不会展开显示。如果要展开 Target,就需要使用--all参数。
# systemctl list-dependencies --all nginx.service
五、unit配置文件
1、概述
每一个 Unit 都有一个配置文件,告诉 Systemd 怎么启动这个 Unit 。
Systemd 默认从目录/etc/systemd/system/读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/,真正的配置文件存放在那个目录。
systemctl enable httpd.service命令用于在上面两个目录之间,建立符号链接关系。(Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.)等同于 ln -s /usr/lib/systemd/system/httpd.service /etc/systemd/system/multi-user.target.wants/httpd.service。当然systemdctl diable httpd.service 则相当于删除这个软连接。
/usr/lib/system/system:每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/
/run/system/system:系统执行过程中所产生的服务脚本,与上面目录优先运行。
/etc/systemd/system:管理员建立的执行脚本,类似于/etc/rc.d/rcN.d/Sxx的功能,比上面目录优先运行。
2、配置文件状态
systemctl list-unit-files命令用于列出所有配置文件。
列出所有配置文件
#systemctl list-unit-files
列出指定类型的配置文件
#systemctl list-unit-files --type=service
systemctl list-unit-files该命令会输出一个列表,从中可以看到每个配置文件的状态。
Unit config filestatus
lvm2-lvmetad.service disabled
lvm2-lvmetad.socket enabled
lvm2-lvmpolld.service disabled
lvm2-lvmpolld.socket enabled
这个列表显示每个配置文件的状态,一共有四种。
enabled:已建立启动链接
disabled:没建立启动链接
static:该配置文件没有[Install]部分(无法执行),只能作为其他配置文件的依赖
masked:该配置文件被禁止建立启动链接
注意,从配置文件的状态无法看出,该 Unit 是否正在运行。这必须执行前面提到的systemctl status命令。
# systemctl status httpd.service
3、配置文件格式
1)unit配置文件格式
[Unit]
Description=backup /etc
Requires=atd.service
[Service]
Type=simple
ExecStart=/bin/bash -c "echo /testdir/bak.sh|at now"
[Install]
WantedBy=multi-user.target
[unit] :定义与Unit类型无关的通用选项;用于提供unit的描述信息、 unit行为及依赖关系等
[Service]:与特定类型相关的专用选项;此处为Service类型
[Install]:定义由“ systemctl enable”以及"systemctl disable“命令在实现服务启用或禁用时用到的一些选项
2、Unit段的常用选项:Description:简短描述
Description:描述信息
After:定义unit的启动次序,表示当前unit应该晚于哪些
unit启动,其功能与Before相反
Requires:依赖到的其它units,强依赖,被依赖的units无法激活时,当前unit也无法激活
Wants:依赖到的其它units,弱依赖
Conflicts:定义units间的冲突关系
BindsTo:与Requires类似,它指定的 Unit 如果退出,会导致当前 Unit 停止运行
Before:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之后启动
Conflicts:这里指定的 Unit 不能与当前 Unit 同时运行
Condition...:当前 Unit 运行必须满足的条件,否则不会运行
Assert...:当前 Unit 运行必须满足的条件,否则会报启动失败