Возможно, я абсолютно гаек, и раз так - это прекрасно. Но как я запланировал бы задание к on-some-random-schedule, широковещательно передает глупое сообщение, как от fortune
?
разъяснение
да - это - моя персональная рабочая станция - не планирующий сделать что-то wonky на рабочем сервере :)
at
имеет более простой интерфейс для этого типа цели если at
установлен, машина работает atd
и пользователю разрешают использовать команду.
Например (проверяют точное использование синтаксиса man at
или info at
),
at -f
файл now + 53 minutes
или
at -f
файл now + 2 hours
выполнит команды в указанном файле через 53 минуты или 2 часа, соответственно.
at
может затем быть повторно выполнен в начале запланированного задания с подходящим (случайный, или иначе) запускаются, рассчитывают, и единицы измерения времени.
Править
Как Arjan указывает услужливо ниже при использовании этого для кроме игрушечного приложения, необходимо думать о проблемах такой как, что происходит
если следующий запуск запускается перед предыдущими концами (например, действительно ли сценарий повторно используемо?) или
если выполнению не удается завершиться правильно или
если следующему запуску не удается запуститься вообще или вовремя (например, что происходит, если машина выключена, когда следующий запуск должен запуститься), и
о входе и создании отчетов неудавшихся или успешных выполнений.
Внутренне к cron
, Я не думаю, что такая функция существует. Я думаю, что лучшее решение состояло бы в том, чтобы поместить Вашу команду в сценарий оболочки и поместить случайное sleep
интервал наверху сценария и использования $RANDOM
переменная. Затем запустите скрипт один раз в день в регулярном задании крона.
#!/bin/bash
sleep $(($RANDOM%5))
/path/to/command -param1 -param2
Это будет зависеть от того, какой интервал Вы после. но давайте предположим, что требуется за сценарий работать случайным образом с вероятностью 1:30 (один раз в 30 минут)
Создайте свой сценарий крона для peridiocity, скажите 10 минут. Это будет стрелять 3 раза каждые 30 минут.
В сценарии используют рэнд в качестве условия для если оператор. Вы хотите, чтобы рэнд возвратил число между 0 и 2. Если это 0, выполняют содержание если оператор.
По существу Ваш сценарий всегда стреляет в интервал набора. Но только выполнит команду, Вам интересно случайным образом. Ваш поставщик услуг поблагодарит Вас.
at
- команда является первой строкой, и если сценарий работает в течение долгого времени (или если интервалы коротки), то остерегайтесь выполнения нескольких экземпляров одновременно. Но когдаat
в последней строке сценария, затем очевидно, никакое перепланирование не будет сделано, если сценарий перестанет работать. Кроме того, запущение скрипта из командной строки сделает его (пере-) самим расписанием также (и: несколько расписаний могли затем существовать одновременно). Иcron
поддержки, отправляющие любые ошибки (или: вывод в целом) по электронной почте; я не знаю еслиat
что-то имеет как этот также? – Arjan 17.09.2009, 11:33