Je suis programmeur et je ne connais pas grand-chose aux crons, mais je veux savoir si c'est possible.
Disons que j'ai un tableau [option1, option2, option3]
et un script que j'exécute dans NodeJS appelé script.js
. Je veux exécuter ce script chaque jour à 1 heure du matin. La cron
commande de ceci serait:
0 1 * * * node ~/script.js
Eh bien maintenant, la partie délicate, je veux faire pivoter les options chaque jour, donc par exemple lundi je veux courir node ~/script.js option1
, le lendemain node ~/script.js option2
et ainsi de suite. De plus, je veux pouvoir ajouter / supprimer des options en cas de besoin, mais la rotation doit rester intacte.
Est-ce possible d'une manière ou d'une autre? Je sais que je pourrais le faire également dans le nœud, mais je préfère le faire en dehors du script et laisser le script tel quel.
Réponses:
C'est délicat. Que signifie que la rotation reste intacte après modification de la liste des options? Après tout, vous pourriez être en train de reconstruire complètement la liste, détruisant tout indice sur votre position.
Ce que vous pourriez probablement faire, c'est créer un répertoire avec des fichiers qui représentent vos options (soit via leur nom de fichier, soit leur contenu). Ensuite, chaque fois que le travail cron s'exécute, vous listeriez ce répertoire, en triant les fichiers par heure de dernière modification. Vous prenez l'entrée la plus ancienne,
touch
ce fichier pour changer son heure de modification à l'heure actuelle, puis l'utilisez pour exécuter le script.Si vous le souhaitez, vous pouvez également écrire ceci sur une seule ligne pour cron, bien que cela devienne plus difficile à lire.
Ajouter des options signifie ajouter de nouveaux fichiers au répertoire d'options. Supprimer des options signifie supprimer des fichiers. À tout moment, le fichier le plus ancien est celui à exécuter ensuite, de nouvelles options seront ajoutées à la toute fin du cycle, comme si le venait d'être exécuté. Si vous souhaitez réorganiser les options, vous pouvez les toucher dans l'ordre de votre choix.
la source
$(ls -rt | head -n1)
va bien sûr casser les noms de fichiers qui incluent des sauts de ligne, mais à cet effet, vous pouvez probablement vous en tirer avec "ne faites pas ça".Disons que vous voulez une option différente pour chaque jour de la semaine. Vous pouvez:
Ayez un travail cron séparé pour ceux-ci:
etc...
Avoir
bash
fourni les options souhaitées pour vous:(Je n'ai pas exécuté ce dernier, il pourrait donc avoir besoin de quelques ajustements - mais c'est l'idée générale.)
la source
echo option1
etc, car mes options peuvent varier d'une semaine à l'autre. Je vais juste faire cela dans mon application Node et garder une trace de celle que j'ai exécutée en dernier dans ma base de données.Non, je ne peux penser à aucun moyen propre de le faire. Il suffit d'écrire un simple script wrapper shell qui vérifie la date et démarre votre application de nœud avec vos options requises chaque jour.
la source