2013-09-22 18 views
50

Ich habe eine Textdatei mit einem bestimmten Datum und Uhrzeit. Ich möchte in der Lage ein Skript zu dem in dieser Datei angegebenen Zeitpunkt ausführen. Wie würden Sie das erreichen? Erstellen Sie ein anderes Skript, das im Hintergrund läuft (eine Art Deamon) und prüft jede Sekunde, ob die aktuelle Zeit mit der Zeit in der Datei übereinstimmt? Gibt es einen anderen Weg? Die Maschine ist ein Linux Server, Debian Wheezy. Vielen Dank im VorausLinux Wie Skript zu bestimmter Zeit ausführen?

+3

Jeder Grund, warum Cron nicht funktioniert? – lreeder

+2

Warum ist dieses Thema geschlossen? Es ist eine sehr vernünftige Frage. Google-Suche führt dich dazu als # 1 Und die Antworten sind ziemlich nerdisch.So jemand, der dies beantworten kann, ist klar, Englisch wird blockiert – Richard

+0

@Richard Ich vermute, der Grund, warum StackOverflow schließt so viele Fragen wie dies ist, um Benutzer zu ermutigen Fragen, die off-topic sind hier auf der entsprechenden StackExchange-Website. Es gibt einige neue SE-Websites, die vorher nicht existierten. Zum Beispiel gibt es ziemlich viele [sehr nützliche Vim-Fragen] (https://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim/1220118) auf SO, die gewesen sind geschlossen als Off-Thema, und jetzt, da es eine Vi/Vim SE gibt, würden diese Fragen dort Thema sein. Nur grübeln. Allerdings scheint dies immer noch wie eine Programmierfrage – mgarey

Antwort

101

Blick auf die folgenden:

echo "ls -l" | at 07:00 

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

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

Hoffe, es hilft!

+2

erhalten einen Fehler '' 'Kann /var/run/atd.pid nicht öffnen, um atd zu signalisieren. Kein Atd läuft? «» Irgendeine Ahnung? – HappyCoding

+0

Sie benötigen den 'atd'-Daemon, der ausgeführt wird, um' at' zu verwenden. Auf Manjaro OpenRC können Sie einfach 'at-openrc' installieren und den Daemon atd service hinzufügen mit:' sudo rc-update add atd' und mit 'sudo rc-service atd start' beginnen. Normalerweise hatte das 'at'-Paket bereits einen' systemd'-Dienst (das Standard-init/service-System auf verschiedenen Distributionen, einschließlich Ubuntu), der mit 'sudo systemctl start atd' gestartet werden kann und den Autostart bei init mit' sudo systemctl enable aktiviert atd'. –

+0

In meinem Fall druckt dies "Job 6 am 2017-08-21 10:53" sofort aus ... – Jewenile

4

Normalerweise in Linux verwenden Sie crontab für diese Art von Aufgaben. Aber Sie müssen den Zeitpunkt angeben, zu dem Sie den Timer einrichten. Wenn Sie also möchten, dass er in der Datei selbst konfiguriert werden kann, müssen Sie einen Mechanismus dafür erstellen.

Aber in der Regel würden Sie verwenden, zB:

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

Würde das Skript ausführen, jeden Freitag um 01.30 Uhr (AM) hier:

30 ist nur wenige Minuten

1 ist Stunde

nächste 2 * 's sind day of month und month (in th auf Bestellung) und 5 ist Wochentag

+1

also wie würden Sie diesen Befehl auslösen? –

10

Der Befehl at existiert speziell für diesen Zweck (im Gegensatz zu cron, der für die Planung wiederkehrender Aufgaben vorgesehen ist).

at $(cat file) </path/to/script 
+0

mit bash, würden Sie schreiben '$ (

5

Cron ist gut für etwas, das regelmäßig ausgeführt wird, wie jeden Samstag um 4 Uhr morgens. Es gibt auch anacron, die um Power-Shutdowns arbeitet, schläft und was nicht. Sowie bei.

Aber für eine einmalige Lösung, die nicht root oder irgendetwas benötigt, können Sie Datum zu berechnen die-Sekunden seit Epoche der Zielzeit sowie der heutigen Zeit, dann verwenden nur verwenden expr, um den Unterschied zu finden, und schlafen, dass viele Sekunden.

+5

Ein 'at'-Job bleibt geplant, selbst wenn der Computer in der Zwischenzeit neu gestartet wird. – tripleee

Verwandte Themen