Systemd Service Type oneshot和simple之间有什么区别

时间:2016-08-19 06:04:57

标签: systemd

systemd服务Type oneshotsimple之间有什么区别? 此link表示使用simple代替oneshot作为计时器。我无法正确理解它。

2 个答案:

答案 0 :(得分:44)

Type=oneshot服务单位:

  • 阻止启动操作,直到第一个进程退出,其状态将报告为"激活";

  • 一旦第一个进程退出,转换为"激活"直到"不活动",除非RemainAfterExit=true被设置(在这种情况下,它变为"活动"没有进程!);

  • 可以有任意数量(0或更多)的ExecStart=指令,这些指令将按顺序执行(等待每个已启动的进程在开始下一个进程之前退出);

  • 可能会遗漏ExecStart=但有ExecStop=(与RemainAfterExit=true一起用于安排在系统关闭时运行的内容)。

Type=simple服务单位:

  • 不会阻止启动操作(即,即使它仍在初始化,也会立即执行"激活"即使它仍在初始化!)

  • 一旦第一个进程退出,转换为" active"到"不活跃" (没有RemainAfterExit=选项);

  • 通常是不鼓励的,因为由于配置错误而没有办法区分像#34;启动时出现的情况"来自"在运行500ms后崩溃了#34;等等。

Type=oneshotType=simple单位:

  • 忽略第一个过程中的所有子项,因此不要将这些模式与分叉过程一起使用(注意:您可以将Type=oneshotKillMode=none一起使用,但只有在知道了正在做)。

答案 1 :(得分:0)

从systemd的角度来看,Type=simple有点火,忘了。 Systemd只是在ExecStart=中定义了一个进程,即使进程无法启动也会继续进行。