man systemd.unit   

man systemd.service

###依赖关系和前后顺序
* 依赖关系:Requires和Wants

* 前后顺序:After,Before

依赖关系,前后顺序是比较容易混淆的,当使用Requires和Wants的时候,

* 如果不搭配After,Before使用,比如:

unit A Requires unit B, 那么A和B会一起启动,如果B失败了,A也就失败了,只有B成功了,A才能成功;

unit A Wants unit B, 那么A和B会一起启动,如果B失败了,A也就失败了,只有B成功了,A才能成功;

* 建议搭配After,Before使用,比如:

unit A Requires unit B, 那么同时最好unit A中写上:After=B

###unit处理依赖关系:Requires和Wants的区别?
使用systemd时,可通过正确编写单元配置文件来解决其依赖关系。典型的情况是,单元A要求单元B在A启动之前运行。在此情况下,向单元A配置文件中的 [Unit] 段添加 Requires=B 和 After=B 即可。若此依赖关系是可选的,可添加 Wants=B 和 After=B。请注意 Wants= 和Requires= 并不意味着 After=,即如果 After= 选项没有制定,这两个单元将被并行启动。
依赖关系通常被用在服务(service)而不是目标(target)上。例如, network.target 一般会被某个配置网络接口的服务引入,所以,将自定义的单元排在该服务之后即可,因为 network.target 已经启动。

###unit文件中,服务类型: Type= 参数
编写自定义的 service 文件时,可以选择几种不同的服务启动方式。启动方式可通过配置文件 [Service] 段中的 Type= 参数进行设置。

* Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。
* Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。
* Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。
* Type=notify:与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。
* Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。
* Type=idle: systemd会等待所有任务处理完成后,才开始执行idle类型的单元。其他行为和Type=simple 类似。

最新文章

  1. Stream 和 byte[] 之间的转换
  2. su,exit,adduser,deluser,usermod,groups
  3. JS错误捕获
  4. java使用httpcomponents发送get请求
  5. A20VGA和lvds显示的切换-
  6. java BufferedWriter and BufferedReader
  7. 如何解决Mac与iPhone之间handoff连接问题
  8. javascript设计模式8
  9. 线性布局LinearLayout和相对布局RelativeLayout 之间的比较
  10. [转]Delphi 中动态链接库(dll)的建立和使用
  11. css white-space
  12. win7远程工具mstsc.exe
  13. 360提供的php防注入代码
  14. [LeetCode] Valid Palindrome II 验证回文字符串之二
  15. 【机器学习】--FP-groupth算法从初始到应用
  16. Django mysql应用
  17. js中采用词法作用域
  18. net use共享文件访问
  19. python 安装pandas
  20. unzip命令

热门文章

  1. springBoot2.0 配置@ControllerAdvice 捕获异常统一处理
  2. Python制作NTF传递函数工况文件和后处理文件
  3. thinkphp5.1跨模块调用控制器或者模型
  4. Exadata中的dbserver_backup.sh脚本
  5. Webpack热加载和React(其中有关于include和exclude的路径问题)
  6. CentOS6.5安装MySQL5.7(也适合其他版本安装)
  7. centos7虚拟机安装
  8. CQRS之旅——旅程2(分解领域)
  9. java Smaphore 控制并发线程数
  10. ElasticSearch最新版本下载地址