systemd的“ oneshot”和“简单”服务类型有什么区别?

问题描述 投票:37回答:2

systemd服务Type oneshotsimple有什么区别?此link声明为定时器使用simple而不是oneshot。我无法正确理解。

systemd
2个回答
57
投票

Type=oneshot服务单元:

  • 在开始操作之前一直阻塞,直到第一个进程退出,并且其状态将报告为“正在激活”;

  • 一旦第一个进程退出,除非设置了RemainAfterExit=true,否则它会从“激活”直接过渡到“非活动”(在这种情况下,它会在没有进程的情况下变为“活动”!]]]

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

  • 可能会省略ExecStart=,但有ExecStop=(与RemainAfterExit=true一起用于安排在系统关闭时运行的内容。]]] >>

  • Type=simple服务单元:

    • 不会阻塞启动操作(即,即使第一个过程仍在初始化中,它也会在分叉第一个过程后立即变为“活动”状态;

    • ]
  • 一旦第一个进程退出,就从“活动”转换为“非活动”(没有RemainAfterExit=选项);

  • 通常不建议这样做,因为无法将“由于配置错误而在启动时退出”与“在500ms的运行时间后崩溃”之类的情况区分开。

  • Type=oneshotType=simple单位:

    • 忽略第一个过程的任何子项,因此不要在派生过程中使用这些模式(注意:您可以将Type=oneshotKillMode=none一起使用,但是只有在知道自己在做什么的情况下才这样做
    • )。

    从systemd的角度来看,Type=simple是一种抛砖引玉。即使该进程无法启动,Systemd也会派生一个ExecStart=中定义的进程并继续进行。


0
投票

从systemd的角度来看,Type=simple是一种抛砖引玉。即使该进程无法启动,Systemd也会派生一个ExecStart=中定义的进程并继续进行。

© www.soinside.com 2019 - 2024. All rights reserved.