Имеется долгоработающий скрипт, который запускается от cron'а. Если этот скрипт находит много данных, то он уходит в вычисления на довольно длительный период. Это его нормальное состояние, главное тут - не запустить вторую копию этого же скрипта (которая в нормальном состоянии обязательно запустится при следующем старте cron'а), то есть, проверить наличие работающего скрипта и если он уже есть, тупо завершать выполнение второй копии.
Нужно придумать fail-safe версию, то есть, чтобы не получилось такого, что где-то после перезагрузки или сбоя висит флаг, который не даёт запускать скрипт даже при отсутствии уже работающего скрипта.
Интересно именно Linux-style решение этой проблемы.
Примечание:
В способах решений со всякими lock- и pid- файлами мне непонятно одно: как обеспечивается защита от сбоя? А именно - если скрипт, установивший lock/pid, вдруг внезапно завершится, не удалив этот lock/pid, то как нам догадаться, что скрипт-таки завершился, а не ещё работает?
Примечание:
NetRain, спасибо, я попробую организовать такую проверку через pid и процессы :) Вообще у меня была другая идея - открывать сокет на listen по определённому порту, как известно, два сокета на одном и том же порту открыть не удастся. Но твоя идея с pid мне нравится, поскольку не содержит привязки к сети.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.