Я могу сделать крон “случайным”?

Возможно, я абсолютно гаек, и раз так - это прекрасно. Но как я запланировал бы задание к on-some-random-schedule, широковещательно передает глупое сообщение, как от fortune?

разъяснение
да - это - моя персональная рабочая станция - не планирующий сделать что-то wonky на рабочем сервере :)

12
задан 26.05.2018, 11:19

3 ответа

at имеет более простой интерфейс для этого типа цели если at установлен, машина работает atd и пользователю разрешают использовать команду.

Например (проверяют точное использование синтаксиса man at или info at),

at -f файл now + 53 minutes

или

at -f файл now + 2 hours

выполнит команды в указанном файле через 53 минуты или 2 часа, соответственно.

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

Править

Как Arjan указывает услужливо ниже при использовании этого для кроме игрушечного приложения, необходимо думать о проблемах такой как, что происходит

  1. если следующий запуск запускается перед предыдущими концами (например, действительно ли сценарий повторно используемо?) или

  2. если выполнению не удается завершиться правильно или

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

  4. о входе и создании отчетов неудавшихся или успешных выполнений.

12
ответ дан 07.12.2019, 11:46
  • 1
    +1, но несколько вещей рассмотреть: если at- команда является первой строкой, и если сценарий работает в течение долгого времени (или если интервалы коротки), то остерегайтесь выполнения нескольких экземпляров одновременно. Но когда at в последней строке сценария, затем очевидно, никакое перепланирование не будет сделано, если сценарий перестанет работать. Кроме того, запущение скрипта из командной строки сделает его (пере-) самим расписанием также (и: несколько расписаний могли затем существовать одновременно). И cron поддержки, отправляющие любые ошибки (или: вывод в целом) по электронной почте; я не знаю если at что-то имеет как этот также? – Arjan 17.09.2009, 11:33

Внутренне к cron, Я не думаю, что такая функция существует. Я думаю, что лучшее решение состояло бы в том, чтобы поместить Вашу команду в сценарий оболочки и поместить случайное sleep интервал наверху сценария и использования $RANDOM переменная. Затем запустите скрипт один раз в день в регулярном задании крона.

#!/bin/bash
sleep $(($RANDOM%5))
/path/to/command -param1 -param2
6
ответ дан 07.12.2019, 11:46

Это будет зависеть от того, какой интервал Вы после. но давайте предположим, что требуется за сценарий работать случайным образом с вероятностью 1:30 (один раз в 30 минут)

  • Создайте свой сценарий крона для peridiocity, скажите 10 минут. Это будет стрелять 3 раза каждые 30 минут.

  • В сценарии используют рэнд в качестве условия для если оператор. Вы хотите, чтобы рэнд возвратил число между 0 и 2. Если это 0, выполняют содержание если оператор.

По существу Ваш сценарий всегда стреляет в интервал набора. Но только выполнит команду, Вам интересно случайным образом. Ваш поставщик услуг поблагодарит Вас.

6
ответ дан 07.12.2019, 11:46

Теги

Похожие вопросы