Мне нужно запустить мой скрипт во время загрузки. Я читал, что скрипты в /etc/init.d и /etc/profile.d запускаются во время запуска системы. Насколько отличаются эти каталоги?
Помимо двух вышеописанных способов, похоже, мы также можем настроить cron для запуска службы с помощью записи типа @reboot /path/to script.
Предложите, пожалуйста, правильный/эффективный способ выполнения скрипта во время запуска системы.
решение1
/etc/profile.d
является специфичным для поставщика средством настройки среды сеанса оболочки (настройки PATH
и т. д.) и обычно не связан с запуском демона; некоторые даже утверждают, что запуск демона никоим образом не должен включать /etc/profile.d
, чтобы пользовательские настройки оболочки не могли привести к сбою загрузки демона или загрузке с неправильными настройками среды (часовой пояс, локаль и т. д.).
/etc/init.d
является частью системы инициализации SystemV, реализованной в Linux (Digital UNIX, напротив, поместил ее в /sbin/init.d
); можно написать правильный сценарий инициализации (изучите существующие сценарии, чтобы увидеть, как это правильно сделать), который запустит ваш демон. Это обеспечит вам совместимость как с RHEL6, так и с RHEL7.
Задание @reboot
cron может запустить ваш демон, хотя systemd
в RHEL7 оно предлагает лучшие функции управления, чем функция «запустил и забыл» из cron (что произойдет, если демон выйдет из строя? следует ли его перезапускать автоматически? насколько плохо будет, если будет запущено несколько экземпляров? если плохо, то какой тип блокировки потребуется для запуска только одного экземпляра?).