
Tenho algumas tarefas que gosto de executar periodicamente:
- Enviar todos os repositórios git (5 vezes por dia)
- Faça uma verificação de vírus nos arquivos (a cada 90 dias)
- Baixe o backup do servidor (um por dia)
Para todas essas tarefas, tenho um script. Para orquestrar isso, escrevi um script chamado maintenance
que faz parte do meuprojeto de manutenção. Oversão atual do script.
Possui um arquivo de configuração JSON para as tarefas:
"git-autopush": {
"disk": true,
"internet": true,
"interval": 0.3,
"local": false
},
Gostaria de substituir meu script por algum agendador de tarefas existente, pois gostaria de reduzir o uso de software personalizado em meu sistema. No entanto, tenho os seguintes requisitos:
- Não corra quando estiver funcionando com bateria.
- Forneça algum status visível. Isso poderia ser resolvido
kdialog
. - Execute apenas uma tarefa pesada em disco por vez.
O maintenance
script cuida disso e posso executá-lo sempre que tiver tempo suficiente para executar as tarefas. Caso contrário, posso simplesmente abortar todas as tarefas e reiniciá-las mais tarde.
O cron simples não seria bom, pois não funcionaria quando meu computador estivesse desligado. o anacron pode ser melhor, mas presumo que ele executaria todas as tarefas logo após a inicialização. Além disso, se eu precisar do meu disco para a máquina virtual, como diria ao agendador para parar?
Existe algum programa por aí ou devo continuar a usá-lo?
Responder1
se eu precisar do meu disco para a máquina virtual, como diria ao agendador para parar?
Cron e anacron são (normalmente) serviços daemon. Você pode interrompê-los e iniciá-los da mesma forma que interrompe e inicia qualquer outro serviço.
cron não seria bom, pois não funcionaria quando meu computador estivesse desligado
Esse é um critério muito difícil de contornar. O que você deseja que o software faça enquanto o computador está desligado?
o anacron pode ser melhor, mas presumo que ele executaria todas as tarefas logo após a inicialização.
Aparentemente. Aqui está uma ideia:comece e pare anacron
com cron
.
Execute apenas uma tarefa pesada em disco por vez
Anacron tem esta opção:
-s
Serializa a execução de trabalhos. Anacron não inicia um novo trabalho antes que o anterior termine.
Isso apenas deixa você implementar estes dois:
- Não corra quando estiver funcionando com bateria.
- Forneça algum status visível. Isso poderia ser até mesmo através do kdialog.
A primeira poderia ser realizada fazendo com que o cron verificasse o status da bateria antes de iniciar o anacron. A segunda poderia ser feita de diversas maneiras; você já sugeriu um.