Systemd приносит концепцию юнитов systemd. Юниты представлены конфигурационными файлами, размещенными в одной из директорий:
- /usr/lib/systemd/system/ – юниты из установленных пакетов RPM.
- /run/systemd/system/ — юниты, созданные в рантайме. Этот каталог приоритетнее каталога с установленными юнитами из пакетов.
- /etc/systemd/system/ — юниты, созданные и управляемые системным администратором. Этот каталог приоритетнее каталога юнитов, созданных в рантайме.
Создаем файл нашей службы:
# touch /etc/systemd/system/routing-settings.service # chmod 664 /etc/systemd/system/routing-settings.service
с таким содержимым:
[Unit] Description=Routing Settings Service After=network.target
[Service]
Type=oneshot
User=root
ExecStart=/root/routing.sh
[Install]
WantedBy=multi-user.target
User=root - запуск от имени root! Указывайте (или не указывайте) того пользователя, от имени которого должен выполняться ваш скрипт. Мой скрипт должен выполняться от root. Я не могу сказать, что это меня радует, т.к. возникает необходимость жестко контролировать размещение скрипта и права доступа к нему.
Type=oneshot означает, что процесс будет завершен до запуска дальнейших юнитов. Вполне подходит для скриптов.
Проверяем:
# systemctl start routing-settings
Если после выполнения скрипта мы увидели ожидаемый результат, то разрешим этот "сервис" для автозапуска:
# systemctl enable routing-settings
Пробуем перезагрузиться. Должно работать.
Посмотрим, когда наша служба была запущена:
# systemctl status routing-settings
