Em primeiro lugar, há um esclarecimento:
- init.d é o diretório que armazena scripts de controle de serviços, que controlam o início e a parada de serviços como
httpd
oucron
- rc.local é um serviço que permite a execução de scripts arbitrários como parte do processo de inicialização do sistema
Em termos de se é melhor usar rc.local
ou cron
executar o seu script, suspeito que seja mais uma questão de estética do que de praticidade. cron
, como planejador de tarefas, destina-se a um método para executar manutenção ou manutenção em uma máquina, como verificar atualizações, limpar caches ou executar auditorias de segurança. Isso não significa que está limitado a executar essas funções, pois ele pode executar qualquer script ou comando desejado no horário especificado (como @reboot
).
Utilizando rc.local
, por outro lado, iria cair mais dentro de um tipo de configuração do sistema de tarefa, como rc.local
, a ser executado pelas máquinas sistema de inicialização, é tipicamente responsável por definir a configuração de rede de máquinas, serviços ou ambientes (mas, novamente, não se limita a apenas esta tarefa).
Ambos os pontos, no entanto, devem ser temperados pelo fato de que nem todos os sistemas init oferecem um rc.local
mecanismo, e nem todos os daemons cron oferecem um @reboot
tag psuedo.
Pontos bônus
Como mencionado, init.d
é o diretório que contém os scripts que controlam os serviços que podem ser iniciados ou parados no seu sistema (pelo menos em máquinas que usam um SysV
sistema init do tipo). Dependendo do seu sistema init e da finalidade do seu script, pode ser razoável converter seu script em um script init para ser executado da mesma maneira que um serviço. Isso, no entanto, depende muito do seu sistema init, pois a estrutura em torno de como esses arquivos são construídos pode diferir bastante.
Última palavra
Também deve-se notar que os scripts bash geralmente terminam com um sufixo em .sh
vez de .txt
, pois isso indica imediatamente que o arquivo é um script de shell em vez de um arquivo de texto. Dito isto, desde que ele tenha um shebang ( #!/bin/bash
) na parte superior do arquivo ou seja chamado como bash /path/to/script.whatever
, não deve importar em termos de execução do script.