- Unit(单元)一个单元代表了一个后台服务进程:(可以类比成relations,描述服务之间的依赖关系)
- Description:一段描述性文字,让人知道这个服务是干嘛的,一般都会写;
- (After,Before)/Requires:描述在什么服务之后启动,区别在于(After,Before)非强制启动,类似于一个注释,说明启动本服务之前,【最好】先启动哪些服务,没有任何制约作用,如果那些服务没有启动,本服务照样会启动。Require会自动启动依赖的服务,然后启动本服务,关闭时也会先关闭本服务;
- Documentation:也是描述性文字,一般指向一个http的文档地址,一般不写;
- Wants:功能和Requires相反,带有强制作用,等于反向的描述依赖,但是如果wants的服务没有启动成功,不会影响本服务,因为从关系上,仍然是wants的服务依赖于本服务;
- Conflicts:表示互斥关系,如果Conflicts中的服务已经启动,本服务就不启动;
- BindsTo:指定的unit如果推出,当前服务也会停止运行;
- Condition:当前unit必须满足的条件,否则不会运行;
- OnFailure:如果本unit启动失败,那么启动某个候选方案service,类似于backup;
- Service(服务)配置服务具体的属性了(可以类比成nodes信息)
- Type:服务的启动类型,可以是
- simple:本进程就是主体程序,例如非daemon程序,自己编写的小程序;
- forking:守护进程服务一般采用这种方式启动,即在程序中调用了linux daemon函数;
- oneshot:一次性程序,在程序退出后服务继续运行;
- dbus、idle,notify。
- ExecStart:执行一条shell命令,不要有&&复杂的运行关系,如果有,写入sh脚本中;
- ExecStartPre:预处理脚本,看需要加;
- ExecStartPost:后处理脚本,看需求来加;
- Restart:设置在什么场景下进行重启,always:陷入异常退出或者被系统kill之后自动重启,no, on-success, on-failure,on-watchdog, on-abort;
- RestartSec:服务终止后等待多长时间才重启,默认是100ms,一般没有特殊需求不用设置;
- KillMode:process、control-group、none3选1,process就是当前进程,control-group就是终止一个组,none就是不关闭程序(一般不选);
- TimeoutSec:服务start和stop等超时等待时间;
- Environment:设置环境变量;
- EnvironmentFile:通过文件的方式设置环境变量;
- ExecStop:停止的时候执行的命令;
- ExecReload:重新加载(restart)的时候执行的命令;
- StandardOutput:syslog标准输出路径;
- StandardError:inherit标准错误路径;
- PrivateTmp:True给服务分配独立的临时空间;
- WorkingDirectory:设置工作路径;
- User:以指定的用户名称启动服务;
- Group:以指定的组名称启动服务;
- Type:服务的启动类型,可以是
- Install(安装):
- WantedBy:将服务安装到哪里,一般都是multi-user.target;
- Also:本服务关联的unit,在enable的时候会一起enable;
- Alias:当前unit的别名;
- 其他设置:
- 设置systemd调试模式:service标签下添加:Environment=SYSTEMD_LOG_LEVEL=debug
- 重新加载最新配置:sudo systemctl daemon-reload
- 开启启动某个服务:sudo systemctl enable foo.service