У меня есть сценарий инициализации SysV на Fedora 18. Как я могу запустить его после того, как сеть будет готова?
У меня есть сценарий инициализации SysV на Fedora 18. Fedora 18 использует systemd (и, по-видимому, нет способа переключиться обратно на SysV).
Мой сценарий требует, чтобы сеть была готова. В настоящее время, когда скрипт запускается, сеть не готова. Как я могу убедиться, что мой сценарий инициализации SysV запускается после запуска сети?
Начало моего сценария выглядит так:
#!/bin/bash
#
# chkconfig: 345 99 01
# description: starts the xyz boot service
2 ответа
ОК, попробовав несколько вещей, я попытался добавить заголовок LSB:
### BEGIN INIT INFO
# Required-Start: $network $local_fs $named
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: Starts/stops the foo service
# Description: Starts/stops the foo service
### END INIT INFO
Это сработало! Сценарий теперь запускается после инициализации сети. Я думаю, systemd
Реализация читает заголовок LSB.
Чтобы запустить скрипт, когда сеть будет готова, в разделе [Unit] файла службы systemd добавьте следующее:
After=network-online.target
Wants=network-online.target
Сеть определяется как готовая, когда программное обеспечение для управления сетью считает, что сеть работает (это обычно означает, что IP-адрес настроен и маршрутизируется). Для NetWorkManager он запрашивает информацию в dbus.
Рекомендации
- Запуск служб после запуска сети
- systemd.unit(5) справочная страница
- nm-online исходный код, функция check_online