Estou lendo que usar o cron para tarefas agendadas e repetidas pode ser um risco à segurança. Além disso, alguns outros sistemas estão o descontinuando...
Agora, na versão minimizada do servidor do UBUNTU 24.04.1 LTS, ele não está incluído por padrão. Eu poderia instalá-lo ignorando o aviso de segurança, talvez, mas queria saber quais alternativas existem em vez disso? Digamos, como posso deixar um script bash rodar em alguns horários exatos todos os dias?
Você pode usar timers systemd. Não sei muito sobre segurança de servidores, mas timers systemd resolvem basicamente o mesmo problema que o cron, embora funcionem de uma forma completamente diferente.
Veja The Arch Wiki para mais informações.
Há também várias implementações de cron, como anacron ou cronie. Talvez uma seja mais segura que a outra?
A solução seria usar temporizadores SystemD e combinações de serviços.
A seguir está um exemplo de serviço SystemD e um temporizador SystemD:
custom-process.timer
(colocado em/etc/systemd/system
):custom-process.service
(colocado em/etc/systemd/system
):O arquivo de definição de serviço de processo personalizado informa ao SystemD como executar o script e sob qual usuário, com quais privilégios e em qual diretório de trabalho para
cd
o tempo de execução. A definição do timer define em qual hora/base do calendário (como um script cron faz!) executar o serviço. No exemplo acima, isso executa meu script personalizado uma vez por dia à 1:00 AM. O processo personalizado é um script python personalizado que está em/home/user/custom_script
(que é o que o diretório de trabalho é definido para que o caminho 'relativo' seja entendido como custom-script.py, mas também para que quaisquer outros arquivos python locais que meu script referencia funcionem)Depois de definir um serviço e um objeto de timer adequados, você precisa recarregar as definições do SystemD com
sudo systemctl daemon-reload
.Para testar o serviço e certificar-se de que a definição funciona, execute
sudo systemctl start custom-process.service
Para testar o timer, use
sudo systemctl --now enable custom-process.timer
. Isso iniciará o timer automatizado no momento da inicialização E executará o timer no próximo tempo de execução definido conforme a definição.Detalhes sobre o arquivo de serviço e suas diversas opções podem ser encontrados na documentação do SystemD sobre unidades de arquivo de serviço .
Detalhes sobre o arquivo Timer e suas opções podem ser encontrados na documentação do SystemD sobre unidades de arquivo timer .