История изменений
Исправление 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=.