Linux(入门基础):109---systemd相对于services服务类型的配置文件

一、配置文件

我们知道systemd的所管理服务的配置文件大部分放置于/usr/lib/systemd/system/目录中,但是该目录的文件主要是原本软件所提供的设置,建议不要修改。如果你想要修改,最好去修改/etc/systemd/system/目录的内容。不过如何修改是根据自己个人的设置而选择的

二、配置文件修改举例

我们拿vsftpd.service服务来举例

  • /usr/lib/systemd/system/vsftpd.service文件:官方发布的默认配置文件
  • /etc/systemd/vsftpd.service.d/custom.conf配置文件:在/etc/systemd/下面建立与配置文件相同文件名的目录,但是要加上.d扩展名,然后在该目录下建立配置文件即可,配置文件的扩展名最好为.conf。在这个xxx.d目录下的文件会【累加其他设置】到/usr/lib/systemd/system/vsftpd.service文件中去
  • /etc/systemd/system/vsftpd.service.wants/目录:此目录内的文件为链接文件,设置依赖服务的链接,意思是启动vsftpd.service服务之后,该目录下面的服务也会被启动
  • /etc/systemd/system/vsftpd.service.requires/目录:此目录内的文件为链接文件,设置依赖服务的链接。意思是启动vsftpd.service服务之前,该目录下面的服务会被提前启动

三.service服务配置文件的内容格式

  • 我们以ssd.service文件为例

文件内容被分为三部分:

  • [Unit]部分:unit 本身的说明,以及与其他相依 daemon 的设定,包括在什么服务之后才启动此 unit 之类的设定值
  • [Service], [Socket], [Timer], [Mount], [Path]部分不同的 unit type 就得要使用相对应的设定项目。 这个项目内主要在规范服务启动的脚本、环境配置文件档名、重新启动的方式。我们这个地方是Service类型的文件,所以就是[Service]
  • [Install]部分这个项目就是将此unit 安装到哪个target 里面去

文件内容的注意事项

  • 设置的项目是可以重复的,且后面的项目会替换掉前面的项目,例如可以出现两个After在配置文件中,后面的After会替换掉前面的After
  • 如果一个项目后面什么都没有代表为空。例如:After=
  • 1、yes、true、on可以代表是。0、no、false、off可以代表否
  • 开头为#或;的那一行,为注释

[Unit]部分的项目有

Description 使用 systemctl list-units 时,会输出给管理员看的简易说明, systemctl status 输出的此服务的说明
Documentation 提供管理员能够进行进一步的文件查询的功能,提供的文件可以是如下的资料Documentation=http://www.... 或Documentation=man:sshd(类似) 或 Documentation=file:/etc/...
After 说明此 unit 是在哪个 daemon 启动之后才启动的意思,基本上仅是说明服务启动的顺序而已, 并没有强制要求里头的服务一定要启动后此 unit 才能启动
Before 与 After 的意义相反,是在什么服务启动前最好启动这个服务。不过这仅是规范服务启动 的顺序,并非强制要求
Requires 明确的定义此 unit 需要在哪个 daemon 启动后才能够启动!就是设定相依服务!如果在此项 设定的前导服务没有启动,那么此 unit 就不会被启动!
Wants 规范的是这个 unit 之后最好还要启动什么服务比较好的意思,不过,并 没有明确的规范,主要的目的是希望建立让使用者比较好操作的环境。 因此,这个 Wants 后面接的服务如果没有启动,其实不会影响到这个 unit 本身
Conflicts

代表冲突的服务!即这个项目后面接的服务如果有启动,那么我们这个 unit 本身就不能启动! 我们 unit 有启动,则此项目后的服务就不能启动

[Service]部分的项目有

Type  
EnvironmentFile  
ExecStart  
ExecStop  
ExecReload  
Restart  
RemainAfterExit  
TimeoutSec  
KillMode  
RestartSec  

[Install]部分的项目有

WantedBy 这个设定后面接的大部分是 *.target unit,说明此 unit 附挂在哪一个 target unit 底下 ,一般来说,大多的服务性质的 unit 都是附挂在 multi-user.target 下
Also 当目前这个 unit 本身被 enable 时,Also 后面接的 unit 也 enable 的意思,也就是具有相依性的 服务可以写在这里
Alias 运行一个链接别名的意思。当systemctl  enable相关的服务时,则此服务会进行链接文件的建立。以muli-user.target为例,这个服务是用来作为默认操作环境default.target的使用,因此当你设置用成defalut.target时,这个/etc/systemd/system/default.target就会链接到/usr/lib/systemd/system/multi-user.target

四、案例

  • 制作一个自己设定的系统服务

待续。。。。。。

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/88600304