Quel est un moyen simple de planifier un événement unique à un moment donné dans le futur?

15

Il y a souvent des moments où je veux que mon ordinateur effectue une seule tâche, mais pas maintenant. Par exemple, je pourrais le faire m'informer dans 30 minutes qu'il est temps de quitter le travail. Ou peut-être que je veux qu'il exécute un test compliqué dans 2 heures, alors que je suis sûr que la plupart des autres seront partis du bureau.

Je sais que je pourrais créer un travail cron à exécuter à un moment précis de la journée, mais cela semble beaucoup de travail quand tout ce que je veux, c'est quelque chose de simple comme "Exécuter ce script en 10 minutes", en plus je devrais comprendre à quelle heure ce sera réellement X minutes / heures / jours à partir de maintenant, puis supprimez le travail cron une fois terminé.

Bien sûr, je pourrais simplement écrire ce script et l'exécuter en arrière-plan:

sleep X
do_task

Mais cela semble tellement maladroit: j'ai besoin d'un nouveau script pour chaque tâche, ou j'ai besoin d'écrire et de maintenir un script suffisamment générique pour faire ce que je veux, sans mentionner que je dois comprendre combien de secondes sont en minutes, heures ou jours que je veux.

N'y a-t-il pas une solution déjà établie à ce problème?

Cory Klein
la source
7
Je devine que vous ne l' avez pas courir à travers à encore?
jw013
cela peut sembler très basique ... mais votre système n'a-t-il aucune sorte de calendrier / liste de tâches, avec des avertissements?
JoséNunoFerreira

Réponses:

27

J'utilise un script simple avec 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

Vous pouvez tout aussi facilement diriger $messagevers notify-sendou dzensi vous vouliez une notification de bureau au lieu d'un e-mail.

jasonwryan
la source
9
Peut également utiliser l'heure relative ( + 2 days) et différents formats ( YYYY-MM-DD). Consultez la page de manuel pour plus de détails.
Arcege
Oui: les antipodéens américains préfèrent DD-MM-YY :)
jasonwryan
Je nous habituellement à pour des scripts rapides. Ma façon paresseuse préférée de planifier un travail au travail est "maintenant +5 minutes", ce qui pourrait également être des heures ou des jours.
George M
+1 pour le script et pour avoir mentionné dzen et notify-send dont je n'avais pas entendu parler.
Joe
La redirection dzen ne fonctionne pas pour moi. unix.stackexchange.com/q/38362/4143
Cory Klein
6

La façon générique d'utiliser atest

Écrivez un script qui fait ce que vous voulez faire. Utilisez le chemin complet pour toutes les commandes externes, enregistrez la sortie dans un fichier journal approprié ou envoyez-le par la poste.

Testez le script.

Activez-le avec at -f YOURSCRIPT -t MMDDhhmm

Nils
la source