Sou programador e não sei muito sobre crons, mas quero saber se isso é possível.
Digamos que eu tenho uma matriz [option1, option2, option3]
e um script que eu executo no NodeJS chamado script.js
. Eu quero executar esse script todos os dias às 01:00. O cron
comando disso seria:
0 1 * * * node ~/script.js
Bem, agora a parte complicada, eu quero alternar as opções todos os dias, por exemplo, segunda-feira, eu quero correr node ~/script.js option1
, no dia seguinte node ~/script.js option2
e assim por diante. Além disso, quero poder adicionar / remover opções quando necessário, mas a rotação deve permanecer intacta.
Isso é possível de alguma forma? Sei que também poderia fazer isso dentro do nó, mas prefiro fazê-lo de fora do script e deixá-lo como está.
Respostas:
Isso é complicado. O que significa que a rotação permanece intacta após a modificação da lista de opções? Afinal, você poderia estar reconstruindo completamente a lista, destruindo qualquer pista sobre onde estava.
O que você provavelmente poderia fazer é configurar um diretório com arquivos que representem suas opções (seja pelo nome do arquivo ou pelo conteúdo). Então, sempre que o trabalho cron for executado, você listará esse diretório, classificando os arquivos pela última vez em que foi feita a modificação. Você pega a entrada mais antiga,
touch
esse arquivo, para alterar seu horário de modificação para o horário atual e, em seguida, usa-o para executar o script.Se quiser, você pode escrever isso em uma única linha para o cron, embora seja mais difícil de ler.
Adicionar opções significa adicionar novos arquivos ao diretório de opções. Remover opções significa excluir arquivos. A qualquer momento, o arquivo mais antigo será o próximo a ser executado, portanto, novas opções serão adicionadas no final do ciclo, como se ele tivesse acabado de ser executado. Se desejar reordenar as opções, toque-as na ordem que desejar.
fonte
$(ls -rt | head -n1)
obviamente, você quebrará nomes de arquivos que incluem novas linhas, mas para esse fim, você provavelmente pode se safar apenas "não faça isso".Digamos que você queira uma opção diferente para cada dia da semana. Você pode:
Tenha um trabalho cron separado para estes:
etc ...
Tem
bash
fornecer as opções desejadas para você:(Eu não executei o último, por isso pode precisar de alguns ajustes - mas essa é a ideia geral.)
fonte
echo option1
etc, porque minhas opções podem variar de semana para semana. Vou fazer isso no meu aplicativo Node e acompanhar qual deles eu executei por último no meu banco de dados.Não, não consigo pensar em nenhuma maneira limpa de fazer isso. Basta escrever um script simples de invólucro de shell que verifique a data e inicie o aplicativo do nó com as opções necessárias todos os dias.
fonte