Was ist eine einfache Möglichkeit, eine einzelne Veranstaltung zu einem späteren Zeitpunkt zu planen?

15

Manchmal möchte ich, dass mein Computer eine einzelne Aufgabe ausführt, aber momentan nicht. Zum Beispiel könnte ich mich in 30 Minuten benachrichtigen lassen, dass es Zeit ist, die Arbeit zu verlassen. Oder vielleicht möchte ich, dass es in zwei Stunden einen komplizierten Test durchführt, wenn ich sicher bin, dass die meisten anderen aus dem Büro verschwunden sind.

Ich weiß, ich könnte einen Cron-Job erstellen, der zu einer bestimmten Tageszeit ausgeführt wird, aber das scheint eine Menge Arbeit zu sein, wenn ich nur etwas Einfaches wie "Dieses Skript in 10 Minuten ausführen" möchte, außerdem muss ich es herausfinden Ab wann ist es tatsächlich X Minuten / Stunden / Tage? Löschen Sie den Cron-Job, sobald er abgeschlossen ist.

Natürlich könnte ich dieses Skript auch einfach schreiben und im Hintergrund ausführen:

sleep X
do_task

Aber das scheint so klobig zu sein: Ich brauche entweder ein neues Skript für jede Aufgabe, oder ich muss ein Skript schreiben und warten, das so allgemein ist, dass ich tun kann, was ich will, ganz zu schweigen davon, wie viele Sekunden in den Minuten sind. Stunden oder Tage, die ich will.

Gibt es keine bereits etablierte Lösung für dieses Problem?

Cory Klein
quelle
7
Ich vermute , Sie haben nicht über den Weg gelaufen bei noch?
jw013
Das mag sehr einfach erscheinen ... aber hat Ihr System keine Art von Kalender- / Aufgabenliste mit Warnungen?
JoséNunoFerreira

Antworten:

27

Ich benutze ein einfaches Skript mit at:

#!/bin/bash
# email reminder notes using at(1)...

read -p "Time of message? [HH:MM] " time
read -p "Date of message? [dd.mm.yy] " date
read -p "Message body? " message

at "$time" "$date" <<EOF
echo "$message" | mailx -s "REMINDER" [email protected]
EOF

Sie können das genauso einfach weiterleiten $message, notify-sendoder dzenwenn Sie eine Desktop-Benachrichtigung anstelle einer E-Mail wünschen.

jasonwryan
quelle
9
Kann auch relative Zeit ( + 2 days) und andere Formate ( YYYY-MM-DD) verwenden. Weitere Informationen finden Sie in der Manpage.
Arcege
Ja: wir Antipoden bevorzugen TT-MM-JJ :)
jasonwryan
Ich normalerweise uns an für quickie einmalige Indexe. Meine faulste Art, einen At-Job zu planen, ist "jetzt +5 Minuten", was auch Stunden oder Tage sein kann.
George M
+1 für script und zum erwähnen von dzen und notify-send, von denen ich noch nichts gehört hatte.
Joe
Die DZEN-Umleitung funktioniert bei mir nicht. unix.stackexchange.com/q/38362/4143
Cory Klein
6

Die generische Verwendung atist

Schreiben Sie ein Skript, das das tut, was Sie tun möchten. Verwenden Sie den vollständigen Pfad für alle externen Befehle, protokollieren Sie die Ausgabe in einer geeigneten Protokolldatei oder senden Sie sie per E-Mail.

Testen Sie das Skript.

Aktivieren Sie es mit at -f YOURSCRIPT -t MMDDhhmm

Nils
quelle