Я пытаюсь настроить новый сервис (под Debian Jessie), который должен настроить некоторые монтирования, где хранится конфигурация сети, и, таким образом, этот сервис должен завершиться до запуска network.service.
Я попробовал следующее:
[Unit]
Description=mount/repair remaining filesystems (all persistent fs beyond "/")
#Before=network-pre.target
Before=networking.service
[Service]
Type=oneshot
ExecStart=/opt/intermodul-mounts/start.sh
TimeoutSec=0
RemainAfterExit=yes
[Install]
RequiredBy=networking.service
Используя, systemd-analyze plot
я вижу, что мой сервис запускается, но networking.service
запускается примерно на 3 секунды раньше:
Видимо мой конфиг неверен, но мне трудно найти проблему ... Любая помощь очень ценится ..
Обновить
В настоящее время я решил это, изменив конфигурацию службы, чтобы начать раньше local-fs.target
вместо networking.service
:
[Unit]
DefaultDependencies=no
Description=mount/repair remaining filesystems (all persistent fs beyond "/")
Before=local-fs.target
[Service]
Type=oneshot
ExecStart=/opt/intermodul-mounts/start.sh
TimeoutSec=0
RemainAfterExit=yes
[Install]
RequiredBy=local-fs.target
Тем не менее, я хотел бы понять, почему моя первая конфигурация не работает должным образом ...?
/etc/network/interfaces
есть ссылки наip-up
скрипты, которые находятся в другом разделе. Этот раздел монтируется сложным сценарием,/opt/intermodul-mounts/start.sh
который должен быть запущен до настройки сети. В настоящее времяip-up
сценарии фактически не запускаются, потому что они недоступны во время загрузки. Запускservice networking restart
после этого корректно вызывает все интерфейсы.Ответы:
Вы хотите использовать,
network-pre.target
если вы хотите настроить что-то до запуска сетиВы должны поместить их в
[Unit]
раздел:Ссылка
источник
systemctl is-enabled <unit>
всегдаstatic
. Конечно, я не могу включить его, потому что нетWantedBy=
. В конце концов, чего он хочет? Это то, что делает некоторые настройки до загрузки сети.Before=network-pre.target
и такWants=network-pre.target
и для[Install]
нас сделалиWantedBy=network.target
. Последний раздел заставлял это требоваться сетью, первый приводил это в порядок. Была боль, хотяКак и в Debian Jessie, пакет netfilter-persistent (позволяющий загружать правила iptables до запуска сети) имеет сервис netfilter-persistent.service, который выглядит следующим образом:
источник
shutdown.target
?!Ошибка проста и одна из главных вещей, которые я всегда смешиваю: вы смешиваете
Before
иRequiredBy
. Это не идет вместе. Другие правы относительно цели.источник
Делая что-то в этом направлении, вы убедитесь, что устройство работает до сети, но после того, как произошла большая часть других важных настроек.
источник