cron
не знает, когда будет выполнено задание. Все, что он делает, это каждую минуту, просматривает все записи crontab
и запускает те, которые соответствуют "$(дата '+%M %H %d %m %w')"
.
Все, что вы можете сделать, это сгенерировать все эти временные метки для каждой минуты с этого момента до 49 часов с этого момента (учет изменения DST), сделать совпадение вручную (хитрая часть) и сообщить о первом совпадении.
Или вы можете использовать модуль croniter python
:
python -c '
from croniter import croniter
from datetime import datetime
iter = croniter("3 9 * * *", datetime.now())
print iter.get_next(datetime)'
Для задержки:
$ faketime 13:52:00 python -c '
from croniter import croniter
from datetime import datetime
d = datetime.now()
iter = croniter("30 9 * * *", d)
print iter.get_next(datetime) - d'
19:37:59.413956
Остерегайтесь потенциальных ошибок вокруг изменения DST, хотя:
$ faketime '2015-03-28 01:01:00' python -c '
from croniter import croniter
from datetime import datetime
iter = croniter("1 1 * * *", datetime.now())
print iter.get_next(datetime)'
2015-03-29 02:01:00
$ FAKETIME_FMT=%s faketime -f 1445734799 date
Sun 25 Oct 01:59:59 BST 2015
$ FAKETIME_FMT=%s faketime -f 1445734799 python -c '
from croniter import croniter
from datetime import datetime
iter = croniter("1 1 * * *", datetime.now())
print iter.get_next(datetime)'
2015-10-25 01:01:00
$ FAKETIME_FMT=%s faketime -f 1445734799 python -c '
from croniter import croniter
from datetime import datetime
d = datetime.now()
iter = croniter("1 1 * * *", d)
print iter.get_next(datetime) - d'
-1 day, 23:01:01
cron
сам позаботится об этом, избегая запускать задание дважды, если время пошло назад, или запускать пропущенные задания после смены, если время пошло вперёд.
Самым простым решением для вас будет запретить вашей точке доступа MAC-адрес вашего клиента.
Это, или просто прекратить попытки подключения к каждой открытой BSS-сети.[1122083].