Я настраиваю systemd в файле конфигурации облака для CoreOS. Если я правильно понимаю, у меня есть два способа запустить устройство при загрузке:
Альтернатива 1, используйте раздел [Установить]
(как описано в руководствах по цифровым океанам ):
- name: initialize_data
content: |
[Unit]
Description=Run a command
[Service]
Type=oneshot
ExecStart=/usr/bin/mkdir /foo
[Install]
WantedBy=multi-user.target
Альтернатива 2, отбросьте раздел [Install]
и используйте команду : start
:
- name: initialize_data
command: start
content: |
[Unit]
Description=Run a command
[Service]
Type=oneshot
ExecStart=/usr/bin/mkdir /foo
Есть ли недостатки при запуске устройства с помощью команды : start
? Я понимаю, что я не могу контролировать, какой модуль он будет запускать после, но что-то еще? Будет ли он учитывать [Unit]
-директивы, такие как Requires =
и После =
?
На CoreOS разница небольшая. При использовании systemd на других дистрибутивах Linux, разница заключается в том, что start
только запускает сервис, это не приводит к тому, что start on boot. Именно это и делает enable
, обрабатывая раздел [Install]
системного файла.
Однако, в документах CoreOS сказано, что команды cloud-config
обрабатываются при каждой загрузке. Поэтому, указывая сервис для start
через cloud-config
, сервис, в сущности, также включен.
Скорее всего, CoreOS включает в себя оба варианта, чтобы дать вам полную гибкость доступа к обоим возможностям systemd
.