Какой простой способ запланировать одно событие в будущем?

15

Часто я хочу, чтобы мой компьютер выполнял одну задачу, но не сейчас. Например, я мог бы через 30 минут уведомить меня о том, что пора уходить с работы. Или, может быть, я хочу провести сложный тест через 2 часа, когда я уверен, что большинство остальных уйдут из офиса.

Я знаю, что мог бы создать задание cron для запуска в определенное время дня, но это кажется большой работой, когда все, что я хочу, это что-то простое, например: «Запустить этот скрипт за 10 минут», кроме того, мне нужно было бы разобраться во сколько это будет на самом деле X минут / часов / дней, а затем удалите задание cron после его завершения.

Конечно, я мог бы просто написать этот скрипт и запустить его в фоновом режиме:

sleep X
do_task

Но это просто кажется неуклюжим: мне либо нужен новый сценарий для каждой задачи, либо мне нужно написать и поддерживать сценарий, достаточно общий, чтобы делать то, что я хочу, не говоря уже о том, что мне нужно выяснить, сколько секунд в минутах, часы или дни, которые я хочу.

Нет ли уже устоявшегося решения этой проблемы?

Кори Кляйн
источник
7
Я предполагаю , что вы не натыкаться на еще?
jw013
это может показаться очень простым ... но разве ваша система не имеет какого-либо списка календаря / списка задач, с предупреждениями?
JoséNunoFerreira

Ответы:

27

Я использую простой скрипт с 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" me@gmail.com
EOF

Вы можете так же легко трубе $messageдо notify-sendили dzenесли вы хотите на рабочем столе уведомление вместо электронной почты.

jasonwryan
источник
9
Также можно использовать относительное время ( + 2 days) и разные форматы ( YYYY-MM-DD). Обратитесь к man-странице для более подробной информации.
Arcege
Да: нам, антиподам, нравится DD-MM-YY :)
jasonwryan
Я обычно использую для быстрого запуска сценариев. Мой любимый ленивый способ запланировать на работе "сейчас +5 минут", который также может быть часами или днями.
Джордж М
+1 за сценарий и за упоминание dzen и notify-send, о которых я не слышал.
Джо
Перенаправление дзен не работает для меня. unix.stackexchange.com/q/38362/4143
Кори Кляйн
6

Общий способ использования atявляется

Напишите скрипт, который делает то, что вы хотите сделать. Используйте полный путь для всех внешних команд, зарегистрируйте вывод в соответствующий файл журнала или отправьте его по почте.

Протестируйте скрипт.

Активируйте его с помощью at -f YOURSCRIPT -t MMDDhhmm

Nils
источник