LINUX.ORG.RU

История изменений

Исправление intelfx, (текущая версия) :

Первое. Если о точках монтирования на момент старта системы ничего не известно (т. е. не описаны в fstab) — зависимости от них указать нельзя, RequiresMountsFor= не сработает ( i_gnatenko_brain, disarmer). Вместо этого можно добавить нужный юнит в зависимости к юниту монтирования (динамически создаваемому).

/etc/systemd/system/my-cool-directory.mount.d/start-my-unit.conf:

[Unit]
Wants=my-unit.service
Before=my-unit.service

Но это изготовление троллейбуса из буханки хлеба. Вероятно, проще будет тупо сделать systemctl start my-unit.service из твоего post-up скрипта.

Короче, в обоих случаях придётся извращаться, т. к. ты хочешь событийную семантику (по событию монтирования запускать юнит), в то время как systemd написан с оглядкой на зависимостную семантику (делать монтирование, когда его кто-то попросит).

Второе. Действия перед запуском — если они не вписываются в систему зависимостей и директивы Condition*= — придётся делать через самописный скрипт и указывать его в ExecStartPre=.

Соответственно, действия при остановке (штатной) нужно указывать в ExecStop=, а действия после остановки (любой, в т. ч. падения) — в ExecStopPost=.

Исходная версия intelfx, :

Первое. Если о точках монтирования на момент старта системы ничего не известно (т. е. не описаны в fstab) — зависимости от них указать нельзя, RequiresMountsFor= не сработает ( i_gnatenko_brain, disarmer). Вместо этого можно добавить нужный юнит в зависимости к юниту монтирования (динамически создаваемому).

/etc/systemd/system/my-cool-directory.mount.d/start-my-unit.conf:

[Unit]
Wants=my-unit.service
Before=my-unit.service

Но это изготовление троллейбуса из буханки хлеба. Вероятно, проще будет тупо сделать systemctl start my-unit.service из твоего post-up скрипта.

Короче, в обоих случаях придётся извращаться, т. к. ты хочешь событийную семантику (по событию монтирования запускать юнит), в то время как systemd написан с оглядкой на зависимостную семантику (делать монтирование, когда его кто-то попросит).

Второе. Действия перед запуском — если они не вписываются в систему зависимостей и директивы Condition*= — придётся делать через самописный скрипт и указывать его в ExecStartPre=.

Соответственно, действия при остановке (штатной) нужно указывать в ExecStop=, а действия после остановки (любой, в т. ч. падения) — в ExecStopPost=.