我正在为 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
服务,该服务本质上是start
cloud-config
已启用也一样。
CoreOS 可能包含这两个选项,以便您充分灵活地访问这两个systemd
功能。