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