Systemd 单元:[安装] 与命令:启动(云配置)

Systemd 单元:[安装] 与命令:启动(云配置)

我正在为 CoreOS 在云配置文件中配置 systemd。如果我理解正确的话,我有两种方法可以在启动时启动一个单元:

方案 1,使用[Install]-section(如数字海洋中所述指南):

- name: initialize_data
  content: |
    [Unit]
    Description=Run a command

    [Service]
    Type=oneshot
    ExecStart=/usr/bin/mkdir /foo

    [Install]
    WantedBy=multi-user.target

方案 2,删除[Install]-section 并使用command: start

- name: initialize_data
  command: start
  content: |
    [Unit]
    Description=Run a command

    [Service]
    Type=oneshot
    ExecStart=/usr/bin/mkdir /foo

使用 启动单元有什么缺点吗command: start?我知道我无法控制它在哪个单元之后启动,但还有其他吗?它会遵守[Unit]诸如Requires=和 之类的指令吗After=

答案1

在 CoreOS 上似乎没有什么区别。在其他 Linux 发行版上使用 systemd 时,区别在于它start只会启动服务,而不会导致服务开机启动。这就是enable通过处理[Install]systemd 文件的部分来完成的。

但是,CoreOS 文档说这些命令在每次启动时都会被处理。因此,通过 指定cloud-config服务,该服务本质上是startcloud-config已启用也一样。

CoreOS 可能包含这两个选项,以便您充分灵活地访问这两个systemd功能。

相关内容