Se eu precisar de um cronjob que seja executado no nível do sistema (ou seja, não específico para um determinado usuário), como você sugere que eu o crie?
- executando
crontab -e
como root - anexando-o a
/etc/crontab
- criando um arquivo que define o cronjob em
/etc/cron.d/
- criando um arquivo definindo o cronjob
/etc/cron.*ly/
(mas apenas se esse intervalo de tempo atender às minhas necessidades)
O que mais me preocupa é: qual dessas soluções será possivelmente substituída por uma atualização do sistema ?
Além disso, acho que, se o trabalho for longo, devo colocá-lo em um arquivo de script separado , por exemplo, em /root/bin/
. Você concorda?
Respostas:
Não use
crontab -e
Eu não colocaria isso
crontab -e
como raiz. Isso geralmente é menos óbvio para outros administradores e provavelmente se perderá com o tempo. Ao colocá-los,/etc/crontab
você pode especificar exatamente o horário em que deseja que eles sejam executados e também pode especificar um usuário diferente.Locais alternativos
Se você não se importa em executar o script como um usuário diferente e / ou apenas deseja que o script seja executado semanalmente, diariamente, etc., várias distribuições fornecem diretórios onde podem ser colocados os scripts que serão processados automaticamente em um horário específico.
Por exemplo, nas distros baseadas no Redhat:
Costumo colocar crons no nível do sistema que eu quero executar em um horário específico, em
/etc/cron.d
vez de/etc/crontab
, especialmente se forem scripts mais complexos.Eu prefiro usar os diretórios abaixo
/etc/cron*
porque eles são um local muito mais óbvio que outros administradores de sistema saberão procurar e os arquivos aqui podem ser gerenciados através de instalações de pacotes comorpm
e / ouapt
.Protegendo entradas
Qualquer um dos diretórios que mencionei foi designado para colocar scripts que não serão destruídos por um gerenciador de pacotes. Se você está preocupado em proteger uma entrada do crontab, eu definitivamente não a colocaria no
/etc/crontab
arquivo e, em vez disso, a colocaria como um script adequado em um dos/etc/cron*
diretórios.fonte
Eu escolheria # 4. Ele permite que as configurações do sistema escolham quando executar o trabalho, e geralmente fazem um bom trabalho como "executar quando não estiver ocupado". Alterar o agendador cron do sistema também afetaria automaticamente o tempo de execução do script.
O lado negativo é que você não tem controle direto sobre quando é executado. Se você precisar de mais controle direto, use o número 1.
1 é menos provável que seja substituído por uma atualização do sistema. Embora 3 e 4 devam ser bastante seguros. tudo depende de como você atualiza. Sua distribuição pode ser atualizada da maneira que desejar, mas apenas 2 normalmente correm o risco de serem substituídas.
Finalmente, eu colocaria scripts em / usr / local / bin. Esse é o lugar "normal" em que coloco coisas em todo o sistema, não gerenciadas pelo gerenciador de pacotes da distribuição. / root / bin também é aceitável se for executado apenas por raiz. No entanto, tudo isso é principalmente gosto.
fonte
Qualquer uma das opções acima funcionará e nenhuma das alternativas acima deve ser substituída por atualizações. A escolha real se resume à opinião - quaisquer três pessoas diferentes geralmente terão pelo menos duas, senão três respostas diferentes.
fonte