Innanzitutto, è necessario un chiarimento:
- init.d è la directory che memorizza gli script di controllo dei servizi, che controllano l'avvio e l'arresto di servizi come
httpd
ocron
- rc.local è un servizio che consente l'esecuzione di script arbitrari come parte del processo di avvio del sistema
Per quanto riguarda se è meglio usare rc.local
o cron
eseguire la tua sceneggiatura, sospetto che sia più una questione di estetica che di praticità. cron
, come programmatore di attività, è inteso come un metodo per eseguire la manutenzione o la manutenzione di una macchina, come il controllo degli aggiornamenti, la pulizia delle cache o l'esecuzione di audit di sicurezza. Ciò non significa che sia limitato all'esecuzione di tali funzioni, in quanto può eseguire qualsiasi script o comando desiderato al momento specificato (come @reboot
).
L'uso rc.local
, d'altra parte, rientrerebbe maggiormente in un tipo di attività di configurazione del sistema, poiché rc.local
, essendo eseguito dal sistema init machine, è in genere responsabile dell'impostazione della configurazione della rete, dei servizi o degli ambienti delle macchine (ma, di nuovo, non si limita solo a questo compito).
Entrambi questi punti, tuttavia, dovrebbero essere mitigati dal fatto che non tutti i sistemi init offrono un rc.local
meccanismo, e non tutti i demoni cron offrono un @reboot
tag psuedo.
Punti bonus
Come accennato, init.d
è la directory che contiene gli script che controllano i servizi che possono essere avviati o arrestati sul sistema (almeno sui computer che utilizzano un SysV
sistema di tipo init). A seconda del sistema init e dello scopo dello script, può essere ragionevole convertire lo script in uno script init da eseguire allo stesso modo di un servizio. Ciò, tuttavia, dipende fortemente dal sistema init in quanto il framework che circonda il modo in cui sono costruiti questi file può differire notevolmente.
Ultima parola
Va inoltre notato che in genere gli script bash terminano con un suffisso .sh
anziché anziché .txt
, poiché ciò indica immediatamente che il file è uno script shell anziché un file di testo. Detto questo, purché abbia uno shebang ( #!/bin/bash
) nella parte superiore del file, o sia chiamato come bash /path/to/script.whatever
, non dovrebbe importare in termini di esecuzione dello script.