at
имеет более простой интерфейс для этого типа целей, если at
он установлен, машина работает, atd
и пользователю разрешено использовать эту команду.
Например (проверьте точный синтаксис с помощью man at
или info at
),
at -f
файл now + 53 minutes
или
at -f
файл now + 2 hours
выполнит команды в указанном файле через 53 минуты или 2 часа соответственно.
at
затем может быть перезапущен в начале запланированного задания с подходящими (случайными или иными) значениями начала, количества и времени.
редактировать
Как подсказывает Арджан ниже, если вы используете это не для игрушек, а для других, вам нужно подумать о таких проблемах, как:
если следующий запуск начнется до того, как закончится предыдущий (например, повторный вход сценария?) или
если прогон не завершается правильно или
если следующий запуск не запускается вообще или вовремя (например, что произойдет, если машина выключится, когда должен быть запущен следующий запуск), и
о регистрации и отчетности о неудачных или успешных запусках.
file
содержит следующийat
запуск, правильно?at
-команда является первой строкой и если скрипт выполняется в течение длительного времени (или если интервалы короткие), то остерегайтесь одновременного запуска нескольких экземпляров. Но когда онat
находится в последней строке сценария, то, очевидно, никакое перепланирование не будет выполнено, если сценарий завершится неудачей. Кроме того, запуск сценария из командной строки также приведет к его (пере) планированию (и: при этом одновременно может существовать несколько расписаний). Иcron
поддерживает отправку любых ошибок (или: вывод в целом) по электронной почте; Я не знаю,at
есть ли что-то подобное?У меня есть много команд в / etc / crontab, которые делают разные вещи, а некоторые требуют точности в считанные секунды. Теперь cron может иметь более высокое разрешение, сохраняя при этом все время видимым и централизованным.
Этот пример получает и анализирует веб-страницу от 10 до 50 секунд перед каждыми 5 минутами:
Он не должен иметь точное время, поскольку данные медленно перемещаются, но он помогает максимально сократить время выполнения munin-узла, не дожидаясь веб-страниц. (Плагин дополнительно кэширует страницу в течение 30 минут, чтобы уменьшить ненужные обращения, но должен обновлять базу данных каждые 5 минут).
Обратите внимание, что \% - cron заменяет% на "\ n" - полезно для хранения текста в одной строке.
источник
Внутренне
cron
, я не думаю, что такая особенность существует. Я думаю, что лучшим решением было бы поместить вашу команду в сценарий оболочки, поместить произвольныйsleep
интервал в верхнюю часть сценария и использовать$RANDOM
переменную. Затем запускайте сценарий один раз в день в обычной работе cron.источник
Это будет зависеть от того, какой тип интервала вы после. но давайте предположим, что вы хотите, чтобы скрипт запускался случайным образом с вероятностью 1:30 (один раз каждые 30 минут)
Создайте свой скрипт cron для перидоты, скажем, 10 минут. Он будет стрелять 3 раза каждые 30 минут.
Внутри скрипта используйте rand как условие для оператора if . Вы хотите, чтобы rand возвращал число от 0 до 2. Если оно равно 0, выполните содержимое оператора if.
По сути, ваш скрипт всегда запускается с заданным интервалом. Но выполнит только интересующую вас команду случайным образом. Ваш поставщик услуг поблагодарит вас.
источник