Ich bin ein Programmierer und weiß nicht viel über crons, aber ich möchte wissen, ob dies möglich ist.
Nehmen wir an, ich habe ein Array [option1, option2, option3]
und ein Skript, das ich in NodeJS aufgerufen habe script.js
. Ich möchte dieses Skript jeden Tag um 1 Uhr morgens ausführen. Der cron
Befehl hierfür wäre:
0 1 * * * node ~/script.js
Nun, jetzt der schwierige Teil, ich möchte die Optionen jeden Tag wechseln, also möchte ich zum Beispiel Montag node ~/script.js option1
, den nächsten Tag node ~/script.js option2
und so weiter laufen . Außerdem möchte ich in der Lage sein, Optionen bei Bedarf hinzuzufügen / zu entfernen, aber die Drehung sollte intakt bleiben.
Ist das in irgendeiner Weise möglich? Ich weiß, dass ich dies auch innerhalb des Knotens tun kann, aber ich möchte dies lieber außerhalb des Skripts tun und das Skript so lassen, wie es ist.
Antworten:
Das ist knifflig. Was bedeutet es, dass die Rotation nach der Änderung der Optionsliste intakt bleibt? Schließlich könnten Sie die Liste komplett neu erstellen und alle Hinweise darauf zerstören, wo Sie sich befanden.
Was Sie wahrscheinlich tun könnten, ist ein Verzeichnis mit Dateien einzurichten, die Ihre Optionen darstellen (entweder über ihren Dateinamen oder ihren Inhalt). Wenn der Cron-Job ausgeführt wird, listen Sie dieses Verzeichnis auf und sortieren die Dateien nach dem Zeitpunkt der letzten Änderung. Sie nehmen den ältesten Eintrag,
touch
diese Datei, um ihre Änderungszeit auf die aktuelle Zeit zu ändern, und verwenden ihn dann zum Ausführen des Skripts.Wenn Sie möchten, können Sie dies auch für cron in eine einzelne Zeile schreiben, obwohl das Lesen schwieriger wird.
Das Hinzufügen von Optionen bedeutet, dass dem Optionsverzeichnis neue Dateien hinzugefügt werden. Das Entfernen von Optionen bedeutet das Löschen von Dateien. Zu jedem Zeitpunkt ist die älteste Datei diejenige, die als nächstes ausgeführt wird. Daher werden ganz am Ende des Zyklus neue Optionen hinzugefügt, als ob die Datei gerade ausgeführt worden wäre. Wenn Sie Optionen neu bestellen möchten, können Sie sie in einer beliebigen Reihenfolge berühren.
quelle
$(ls -rt | head -n1)
wird natürlich bei Dateinamen, die Zeilenumbrüche enthalten, kaputt gehen, aber zu diesem Zweck können Sie wahrscheinlich mit "Mach das nicht" davonkommen.Angenommen, Sie möchten für jeden Wochentag eine andere Option. Du kannst:
Habe einen separaten Cron Job für diese:
etc...
Stellen Sie
bash
die gewünschten Optionen für Sie bereit:(Letzteres habe ich nicht ausgeführt, daher ist möglicherweise eine Feinabstimmung erforderlich - aber das ist die allgemeine Idee.)
quelle
echo option1
usw. arbeiten, da meine Optionen von Woche zu Woche variieren können. Ich mache das einfach in meiner Node-App und verfolge, welche ich zuletzt in meiner Datenbank ausgeführt habe.Nein, ich kann mir keinen sauberen Weg vorstellen, dies zu tun. Schreiben Sie einfach ein einfaches Shell-Wrapper-Skript, das das Datum überprüft und Ihre Knotenanwendung täglich mit den erforderlichen Optionen startet.
quelle