Soy programador y no sé mucho sobre crons, pero quiero saber si esto es posible.
Digamos que tengo una matriz [option1, option2, option3]
y un script que ejecuté en NodeJS llamado script.js
. Quiero ejecutar este script cada día a la 1 de la mañana. El cron
comando de esto sería:
0 1 * * * node ~/script.js
Bueno, ahora la parte difícil es que quiero rotar las opciones cada día, así que, por ejemplo, el lunes quiero correr node ~/script.js option1
, al día siguiente, node ~/script.js option2
etc. Además, quiero poder agregar / eliminar opciones cuando sea necesario, pero la rotación debe permanecer intacta.
¿Es esto posible de alguna manera? Sé que también podría hacer esto dentro del nodo, pero prefiero hacerlo desde fuera del script y dejar el script tal como está.
Respuestas:
Eso es complicado ¿Qué significa que la rotación permanezca intacta después de la modificación de la lista de opciones? Después de todo, podrías estar reconstruyendo completamente la lista, destruyendo cualquier pista sobre dónde estabas.
Lo que probablemente podría hacer es configurar un directorio con archivos que representen sus opciones (ya sea a través de su nombre de archivo o su contenido). Luego, cada vez que se ejecute el trabajo cron, enumeraría ese directorio, ordenando los archivos por última hora de modificación. Toma la entrada más antigua,
touch
ese archivo para cambiar su hora de modificación a la hora actual, luego la usa para ejecutar el script.Si lo desea, también puede escribir esto en una sola línea para cron, aunque será más difícil de leer.
Agregar opciones significa agregar nuevos archivos al directorio de opciones. Eliminar opciones significa eliminar archivos. En cualquier momento, el archivo más antiguo es el que se ejecutará a continuación, por lo que se agregarán nuevas opciones al final del ciclo, como si acabaran de ejecutarse. Si desea reordenar las opciones, puede tocarlas en el orden que desee.
fuente
$(ls -rt | head -n1)
por supuesto, se romperá en los nombres de archivo que incluyen nuevas líneas, pero para este propósito probablemente pueda salirse con la suya simplemente "no haga eso".Digamos que desea una opción diferente para cada día de la semana. Usted puede:
Tenga un trabajo cron separado para estos:
etc ...
Tener
bash
proporcionar las opciones deseadas para usted:(No ejecuté este último, por lo que podría necesitar algunos ajustes, pero esa es la idea general).
fuente
echo option1
etc., porque mis opciones pueden variar de una semana a otra. Solo haré esto en mi aplicación Node y haré un seguimiento de cuál ejecuté por última vez en mi base de datos.No, no puedo pensar en una forma limpia de hacer esto. Simplemente escriba una secuencia de comandos de envoltura de shell simple que verifique la fecha e inicie su aplicación de nodo con las opciones requeridas cada día.
fuente