Intellij Idea Community Edition, не может установить «Gradle home»

Ответ лежит в источниках cron (которые вы можете получить с помощью apt-get source cron), особенно в основном цикле на строках 159-272 файла cron.c.

crond спит для минуту, затем просыпается и запрашивает системное время, сравнивая его со своей собственной идеей времени (т. е. в какое время было бы, если бы ничего не изменило часы). Исходя из разницы между фактическим и ожидаемым временем, crond предпринимает различные действия; два из них имеют значение в вашем случае:

Время перескочило вперед более 5 минут, но менее 3 часов (начинается DST): cron запускает задания подстановочных знаков, запланированные в фактическое время, и любое задание, запланированное на фиксированное время между вычисленным временем и фактическим временем. Соответствующий источник находится в строках 221-247:
  /*
   * case 2: timeDiff is a medium-sized positive number,
   * for example because we went to DST run wildcard
   * jobs once, then run any fixed-time jobs that would
   * otherwise be skipped if we use up our minute
   * (possible, if there are a lot of jobs to run) go
   * around the loop again so that wildcard jobs have
   * a chance to run, and we do our housekeeping
   */
  Debug(DSCH, ("[%d], DST begins %d minutes to go\n",
      getpid(), timeRunning - virtualTime))
  /* run wildcard jobs for current minute */
  find_jobs(timeRunning, &database, TRUE, FALSE);


  /* run fixed-time jobs for each minute missed */ 
  do {
     if (job_runqueue())
             sleep(10);
     virtualTime++;
     find_jobs(virtualTime, &database, FALSE, TRUE);
     set_time();
  } while (virtualTime< timeRunning &&
      clockTime == timeRunning);
  break;
Время прошло менее 3 часов (заканчивается DST): просто запускайте задания для подстановочных знаков, пропустите задания с фиксированным расписанием, так как они уже запущены. Соответствующий источник находится в строках 247-258:
/*
 * case 3: timeDiff is a small or medium-sized
 * negative num, eg. because of DST ending just run
 * the wildcard jobs. The fixed-time jobs probably
 * have already run, and should not be repeated
 * virtual time does not change until we are caught up
 */
Debug(DSCH, ("[%d], DST ends %d minutes to go\n",
    getpid(), virtualTime - timeRunning))
find_jobs(timeRunning, &database, TRUE, FALSE);
break;

Итак, при входе в DST у вас не должно возникнуть проблемы: ваш скрипт будет запущен (либо непосредственно перед, либо сразу после скачка времени).

При выходе из DST существует риск того, что ваше (фиксированное время) задание будет пропущено, если вы планируете его точно в 1 час. Мое предложение состояло в том, чтобы запланировать прогон либо за 1 минуту до 1 часа, либо в 2 часа (или после).

1
задан 1 November 2015 в 17:46

0 ответов

Другие вопросы по тегам:

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