it-swarm.com.de

Wie führe ich ein Skript zu einem bestimmten Zeitpunkt unter Linux aus?

Ich habe eine Textdatei mit einem bestimmten Datum und einer bestimmten Uhrzeit. Ich möchte in der Lage sein ein Skript zu der in dieser Datei angegebenen Uhrzeit auszuführen. Wie würden Sie das erreichen? Ein weiteres Skript erstellen, das im Hintergrund ausgeführt wird (eine Art Deamon) und jede Sekunde überprüft, ob die aktuelle Zeit mit der Zeit in der Datei übereinstimmt. Gibt es eine andere Art und Weise? Die Maschine ist ein Linux Server, Debian wheezy. Danke im Voraus

72
Aaron Ullal

Schau dir folgendes an:

echo "ls -l" | at 07:00

Diese Codezeile wird zu einer bestimmten Zeit mit "ls -l" ausgeführt. Dies ist ein Beispiel für die Ausführung von etwas (in meinem Beispiel ein Befehl) zu einem bestimmten Zeitpunkt. "at" ist der Befehl, nach dem Sie wirklich gesucht haben. Sie können die Spezifikationen hier lesen:

http://manpages.ubuntu.com/manpages/precise/en/man1/at.1posix.htmlhttp://manpages.ubuntu.com/manpages/xenial/man1/ at.1posix.html

Ich hoffe es hilft!

135
Antoni

Der Befehl at ist speziell für diesen Zweck vorhanden (im Gegensatz zu cron, mit dem wiederkehrende Aufgaben geplant werden sollen).

at $(cat file) </path/to/script
14
tripleee

Cron ist gut für etwas, das regelmäßig ausgeführt wird, wie jeden Samstag um 4 Uhr morgens. Es gibt auch anacron, das das Herunterfahren, Schlafen und so weiter umgeht. Sowie at.

Aber für eine einmalige Lösung, für die weder Root noch irgendetwas erforderlich ist, können Sie einfach Datum verwenden, um die Sekunden seit dem Zeitpunkt der Zielzeit sowie die aktuelle Zeit zu berechnen, und dann verwenden Ausdruck um den Unterschied zu finden, und Schlaf so viele Sekunden.

7
Anony

Normalerweise verwenden Sie unter Linux crontab für diese Art von geplanten Aufgaben. Sie müssen jedoch die Zeit angeben, zu der der Timer "eingerichtet" werden soll. Wenn Sie also möchten, dass er in der Datei selbst konfiguriert werden kann, müssen Sie hierfür einen Mechanismus erstellen.

Aber im Allgemeinen würden Sie zum Beispiel verwenden:

30 1 * * 5 /path/to/script/script.sh

Würde das Skript jeden Freitag um 1:30 Uhr ausführen. Hier:

30 ist Minuten

1 ist Stunde

die nächsten 2 * sind day of month und month (in dieser Reihenfolge) und 5 ist Wochentag

6
julumme