Судя по ответам здесь, возникает много непонимания того, как работает systemd. Во-первых, не используйте конфликты для исключения цели. Это сделано для того, чтобы конфликтующие службы не запускались одновременно.
If a unit has a Conflicts= setting on another unit, starting the former will stop the latter and vice versa.
Под единицей понимается файл.service, предназначенный для запуска конкретной службы, а не цели, которую необходимо достичь. Другими словами -слова Conflicts=reboot.target
в лучшем случае бессмысленны, а в худшем не позволят вам перезагрузиться. Не делай этого. Это не означает, что не запускайте это при перезагрузке. Это означает прервать либо эту службу, либо reboot.target в зависимости от времени и того, как systemd интерпретирует это ошибочное использование конфликтов.
Вот пример текущего настроенного устройства (, также известного как файл.service ), который запускается только при завершении работы, а не при перезагрузке:
[Unit]
Description=Play sound
DefaultDependencies=no
Before=poweroff.target halt.target
[Service]
ExecStart=/usr/local/bin/playsound.sh
ExecStop=/usr/local/bin/playsound.sh
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=poweroff.target halt.target
poweroff.target эквивалентен старому уровню выполнения systemv 0, который достигается только при завершении работы. halt.target — это альтернативный путь выключения, используемый systemd, который также недоступен при перезагрузке.Раздел установки указывает systemd добавить эту службу в список, который должен быть завершен до того, как poweroff.target
или halt.target
будут считаться достигнутыми.
Эта служба установлена и работает в моей системе.