Для запуска скрипта при загрузке раньше использовался /etc/rc.d/rc.local. В CentOS 7 в этом файле стоит прямое указание, что это - прошлый день и данный метод оставлен для обратной совместимости. Продвинутые же парни должны создавать свои собственные "сервисы" systemd. Попробуем и мы пойти в ногу со временем.
Задача: запускать скрипт /root/routing.sh при каждой загрузке в CentOS 7 с помощью systemd.
Создаем файл нашей службы:
# 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
В выводе мы увидим, какую команду, когда выполнили и другие подробности.
Полезная информация по теме:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Virtualization_Deployment_and_Administration_Guide/sect-Virtual_Networking-Dynamically_changing_a_host_physical_machine_or_a_network_bridge_that_is_attached_to_a_virtual_NIC.html
https://wiki.archlinux.org/index.php/Systemd_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29
Источник: https://bozza.ru/art-267.html
Комментариев нет:
Отправить комментарий