2012-02-15 2 views
-1

Я пытаюсь использовать cron в одном из моих проектов, где мне нужно, чтобы какой-то флаг включался в течение определенного периода времени и отключил его снова. Флаг может находиться в файле или в общей памяти.Манипулирование выражениями CRON

Я довольно новичок в cron, но у меня появилась идея, что мы можем запланировать запуск cmd в любое конкретное время. Поэтому, если я хочу установить флаг, я могу написать программу для чтения файла или прикрепить к обновлению общей памяти флаг и закрыть его и выйти. Но проблема в том, что через X минут флаг должен быть снова отключен.

Я думал, что две работы cron для работы помогут. Мы можем запустить один и тот же cmd с разными аргументами, и я могу поменять флаг соответствующим образом. Это хороший подход?

Если это так; Я застрял в манипулировании данным выражением cron. Если у меня есть только exp, который меняет флаг в (периодическое) время начала и продолжительность, для которой флаг должен быть активным; есть ли способ эффективно добавить продолжительность (что угодно в днях/часах/минутах) к существующему cron exp и создать новый exp? Или мне нужно написать целую логику добавления и корректировки полей соответственно для ее достижения?

У меня есть компоненты, написанные на Java и C++, которые имеют доступ к этому cron exp. Так что делать это на любом языке для меня отлично. Прямо сейчас я пытаюсь на C++.

+0

Если вы отключите команду через некоторое время - скажем, 10 минут, это означает, что вы хотите запустить программу только один раз в следующие 10 минут? Зачем тогда использовать работу cron? Почему бы вам не вызвать команду напрямую (возможно, в потоке в фоновом режиме) или использовать 'at', где вы можете сказать' сейчас + 5 минут'? –

+0

Эту команду можно планировать также по периметру. Как начинать каждый первый день каждую неделю в 3 часа ночи и останавливаться в 5 утра. Что-то вроде того. – vpram86

+0

Так это процесс сервера, который вам нужно остановить? Другие программы обычно запускаются и заканчиваются, когда они закончены. Если это так, вам понадобится две записи: одна для запуска, одна для остановки. –

ответ

1

классического кронтаб линия

*/5 * * * * echo crontabfoo > /dev/null 

помечен неактивный кронтаб строка:

# */5 * * * * echo crontabfoo > /dev/null 

Да, просто обычный комментарий. Если он работает один раз каждые 5 минут, и вы прокомментируете его через 6 минут, у него все еще есть небольшая вероятность дважды запустить, поэтому, возможно, вам захочется указать конкретное время в ближайшем будущем.

+0

Я хочу, чтобы в моей программе включался/выключался периодический флаг. Я пытаюсь использовать CRON для этого.Скажем, у меня процесс непрерывный; Я хочу, чтобы флаг внутри моего процесса был прав только в течение 3 AM-5AM каждый первый день недели в течение всех недель. – vpram86

+0

Я нашел способ указать флаг, используя другой процесс уведомления (который, кажется, уже присутствует в нашей реализации) – vpram86

Смежные вопросы