Во-первых, уточнение в порядке:
- init.d - это каталог, в котором хранятся сценарии управления службами, которые управляют запуском и остановкой служб, таких как
httpd
илиcron
- rc.local - это сервис, который позволяет запускать произвольные сценарии как часть процесса запуска системы
С точки зрения того, лучше ли использовать rc.local
или cron
запускать сценарий, я подозреваю, что это больше вопрос эстетики, чем практичности. cron
, как планировщик задач, предназначен в качестве метода для обслуживания или обслуживания компьютера, такого как проверка обновлений, очистка кэшей или выполнение проверок безопасности. Это не означает, что он ограничен выполнением этих функций, так как может запускать любой скрипт или команду в указанное время (например, @reboot
).
Использование rc.local
, с другой стороны, в большей степени относится к типу задач конфигурации системы, поскольку rc.local
, будучи выполненным системой init машин, обычно отвечает за настройку конфигурации сети, служб или сред компьютеров (но, опять же, не ограничивается только эта задача).
Обе эти точки, однако, должны быть смягчены тем фактом, что не все системы инициализации предлагают rc.local
механизм, и не все демоны cron предлагают @reboot
тег psuedo.
Бонусные очки
Как уже упоминалось, init.d
это каталог, содержащий сценарии, управляющие службами, которые можно запускать или останавливать в вашей системе (по крайней мере, на компьютерах, использующих систему SysV
типа init). В зависимости от вашей системы инициализации и цели вашего скрипта, может быть целесообразно преобразовать ваш скрипт в скрипт инициализации, который будет запускаться так же, как служба. Это, однако, сильно зависит от вашей системы инициализации, так как среда, в которой создаются эти файлы, может сильно различаться.
Последнее слово
Следует также отметить, что обычно сценарии bash заканчиваются суффиксом .sh
вместо .txt
, поскольку это сразу означает, что файл представляет собой сценарий оболочки, а не текстовый файл. При этом, если у него либо есть shebang ( #!/bin/bash
) в верхней части файла, либо он вызывается как bash /path/to/script.whatever
, это не должно иметь значения с точки зрения выполнения скрипта.