Який простий спосіб запланувати одну подію, яка відбудеться на якийсь час у майбутньому?


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якщо ви хочете на робочому столі повідомлення замість електронної пошти.


9
Також можна використовувати відносний час ( + 2 days) та різні формати ( YYYY-MM-DD). Для отримання більш детальної інформації проконсультуйтеся на сторінці сторінки.
Арседж

Так: нас антиподії віддають перевагу DD-MM-YY :)
Jasonwryan

Як правило, ми шукаємо сценарії швидкого вимкнення. Мій улюблений ледачий спосіб запланувати роботу - це "зараз +5 хвилин", які також можуть бути годинами чи днями.
Джордж М

+1 для сценарію та згадування dzen та повідомлення-надсилання, про яке я не чув.
Джо

Перенаправлення dzen для мене не працює. unix.stackexchange.com/q/38362/4143
Cory Klein

6

Загальний спосіб використання at- це

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

Перевірте сценарій.

Активуйте його за допомогою at -f YOURSCRIPT -t MMDDhhmm

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.