概述
CentOS7中新增了unit(单元)的概念,它是所有资源的统称。
unit总共分为:
- Service:系统服务
- Target:多个 Unit 构成的一个组
- Device:硬件设备
- Mount:文件系统的挂载点
- Automount:自动挂载点
- Path:文件或路径
- Scope:不是由 Systemd 启动的外部进程
- Slice:进程组
- Snapshot:Systemd 快照,可以切回某个快照
- Socket:进程间通信的 socket
- Swap:swap 文件
- Timer:定时器
Systemd由一个叫做单元(Unit)的概念,它保存了服务、设备、挂载点和操作系统其他信息的配置文件,并能够处理不同单元之间的依赖关系。大部分单元都静态的定义在单元文件中,也有一些是动态生成的。单元有多种状态:
-
处于活动的则是(active),当前正在运行
-
停止的则是(inactive),当前已经停止
-
启动中的则是(activing),当前正在启动
-
停止中的则是(deactiving),当前正在停止
-
失败的则是(failed)状态,意思说单元启动过程中遇到错误比如找不到文件、路径或者进程运行中崩溃了等。
系统服务参数说明
[Unit]
Description 简单说明
Documentation 文档相关的内容
After 说明本unit是在哪个服务启动之后才启动的意思,仅是说明服务启动顺序而已,没有强制要求
Before 与After的意义相反
Requires 本unit需要在哪个服务启动后才能够启动,就是设置服务间的依赖性。如果此设置的服务没有启动成功,那么本unit就不会被启动
wants 与requitres相反,规范的是这个unit之后还要启动什么服务,如果这wants后接的服务没有启动成功,其实并不会影响到这个unit本身
Conflicts 这个项目后面接的服务如果有启动,那么本unit就不能启动,如果本unit启动了,则指定的服务就不能启动
[Service]
Type 说明这个服务的启动方式,会影响到ExecStart,主要有下面几种类型:
simple:默认值,这个服务主要由ExecStart设置的程序来启动,启动后常驻于内存中。
forking:由ExecStart指定的启动的程序通过spawns产生子进程提供服务,然后父进程退出。
oneshot:与 simple 类似,不过这个程序在工作完毕后就结束了,不会常驻在内存中。
dbus:与 simple 类似,但这个服务必须要在取得一个 D-Bus 的名称后,才会继续运行!因此设置这个项目时,通常也要设置 BusName= 才行。
idle:与 simple 类似,意思是,要执行这个服务必须要所有的工作都顺利执行完毕后才会执行。这类的服务通常是开机到最后才执行即可的服务。
notify:与 simple 类似,但这个服务必须要收到一个 sd_notify() 函数发送的消息后,才会继续运行。
ExecStart
就是实际执行此服务的程序。接受 "命令 参数 参数..." 的格式,不能接受 <, >, >>, |, & 等特殊字符,很多的 bash 语法也不支持。所以,要使用这些特殊的字符时,最好直接写入到脚本里面去!
ExecStartPre 和 ExecStartPost 分别在服务启动前后,执行额外的命令。
ExecStop 用来实现 systemctl stop 命令,关闭服务。
ExecReload 用来实现 systemctl reload 命令,重新加载服务的配置信息。
Restart 当设置为 Restart=1 时,如果服务终止,就会自动重启此服务。
RestartSec 与 Restart 配合使用,在服务终止多长时间之后才重新启动它。默认是 100ms。
KillMode
可以是 process, control-group, none 中的一种,如果是 process 则服务终止时,只会终止主要的程序(ExecStart接的后面那串指令),如果是 control-group 时,则由此 daemon 所产生的其他 control-group 的程序,也都会被关闭。如果是 none 的话,则没有程序会被关闭。
TimeoutSec
若这个服务在启动或者是关闭时,因为某些缘故导致无法顺利 "正常启动或正常结束" 的情况下,则我们要等多久才进入 "强制结束" 的状态!
RemainAfterExit
当设置为 RemainAfterExit=1 时,则当这个服务所属的所有程序都终止之后,此服务会再尝试启动。
[Install] 部分
WantedBy 这个设置后面接的大部分是 *.target unit。意思是,这个 unit 本身是附挂在哪个 target unit 下面。
Also 当目前这个 unit 被 enable 时,Also 后面接的 unit 也要 enable 的意思。
Alias 当 systemctl enable 相关的服务时,则此服务会进行链接文件的创建!
常用命令(start,stop,这些常用命令就不说明了)
列出所有当前激活服务
systemctl list-units --type service
显示服务属性信息
systemctl show chronyd.service
服务的依赖关系
systemctl list-dependencies chronyd.service
最后
以上就是重要盼望为你收集整理的centos 7 服务管理的全部内容,希望文章能够帮你解决centos 7 服务管理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复