Существует ответ, который уже выбран (и это - лучший ответ, так как инструменты VMware дают Вам столько других преимуществ), но другая опция состоит в том, чтобы также выполнить регулярные команды ntpdate в кроне. Это исправляет Ваши часы, однако не справляется с дрейфом часов, но работает в повышении.
Вы не хотите делать это; одно время Ваше задание занимает больше времени, чем минута, Вы собираетесь быть политыми из шланга. Условия состязания как этот делают для ужасных проблем: неустойчивый, непредсказуемый, и трудно диагностировать.
Pboin является точно правильным: необходимо исследовать использование семафора в коде, и затем проблема просто уходит, и Вы не должны волноваться о конфликтах расписания вообще.
Какой язык Вы используете?
Редактирование (извинения за php, не использовали его в некоторое время и немного выпитые, так может не скомпилировать):
"Обычная" тактика с блокировкой должна проверить на блокировку (который в этом случае я делаю путем попытки получить один), и если СУЩЕСТВУЕТ один, чтобы реализовать короткое ожидание и попробовать еще раз. Можно попытаться использовать сон php () функция внутри некоторое время цикл, например:
while($x){
if(flock($file_handle, LOCK_EX)){
$x = false;
}else{
sleep(5);
$x = true;
}
}
Я использую что-то подобное этому для тонн основанных на кроне заданий записи. Работы как очарование. Это - на самом деле похожий метод для коммуникационного протокола ALOHA, который очень похож на более поздний сетевой протокол под названием "TCP/IP". Попробуйте, попробуйте и попробуйте еще раз.
Ну, Вы могли перечислить свои минуты в кроне, как Вы предполагаете, но это действительно не решает проблему. (С одной стороны, крон не гарантирует выполнение в течение никакой данной минуты.)
Вы, вероятно, были бы более обеспеченной реализацией некоторой функциональности блокировки в Вашем сценарии - это - намного меньше взлома. Усовершенствованное Руководство по созданию сценариев Bash, превосходный и бесплатный ресурс предлагает lockfile
команда, которая поможет Вам сделать это.
Вы будете иметь намного меньше для волнения о путем выполнения этого правильно.
sleep
избыточный на основе того, что это точно, чтоflock()
делает? Я предполагаю that' s мой основной вопрос - это, чтоflock()
уже делает, или я должен реализовать этот цикл сам? – Magsol 6 November 2009 в 04:41