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