Я хочу добавить постоянное iptables
правило к моему новому VPS
, и после короткого поиска в Google я был удивлен, что есть два места, где это правило может быть добавлено, которое кажется идентичным: /etc/rc.local
и /etc/init.d/rc.local
. Может быть, кто-то знает, почему два места для размещения простого кода запуска? Это специфический вкус Linux (но в Ubuntu есть оба!)? Или один из них устарел?
configuration
startup
grigoryvp
источник
источник
/etc/rc.local
некоторое время назад.Ответы:
/etc/init.d
поддерживается в Ubuntu для обратной совместимости с sysvinit. Если вы действительно посмотрите,/etc/init.d/rc.local
то увидите (также с сервера 12.04 LTS):И «Run /etc/rc.local» это именно то, что он делает. В целом
/etc/rc.local
это:Я предполагаю, что цель этого состоит в том, чтобы предоставить простое место для размещения команд оболочки, которые вы хотите запустить при загрузке, без необходимости иметь дело с сервисом остановки | запуска, который находится внутри
/etc/init.d/rc.local
.Так что на самом деле это сервис, и его можно запускать как таковой. Я добавил
echo
строку в/etc/rc.local
и:Однако я не верю, что на него ссылается что-либо в
/etc/init
каталоге upstart (не init.d!):В upstart есть несколько "rc" сервисов:
Но ни один из них не имеет ничего общего с rc.local.
источник
Это больше специфическая вещь для дистрибутива. (например, вы не найдете другой rc.local в CentOS).
Теперь, перейдя к вашему актуальному вопросу, я думаю, что добавление чего-либо в /etc/init.d/rc.local делает его запуск «службой», тогда как все, что в /etc/rc.local, просто запускает этот скрипт во время загрузки.
Я не совсем уверен, почему Ubuntu все еще поддерживает их обоих? (Возможно, кто-то еще может пролить свет на эту часть !!)
источник
/etc/init.d/rc.local
он останавливает запуск/etc/rc.local
(подробности см. В моем ответе)./etc/rc.local
скрипт - это исполняемый процесс, управляемый/etc/initd/rc.local
скриптом, точно так же, как (например)/bin/syslog
будет исполняемый процесс, которым управляет/etc/initd/syslog
. Вы прямо говорите, что/etc/rc.local
это просто загрузочный скрипт, а/etc/initd/rc.local
не отдельный сервис уровня выполнения.