Если я добавлю что-то в cron в качестве еженедельной работы, не запустится ли она, если мой компьютер не будет включен в это самое точное время?

381
Zombies

Допустим, я делаю это:

0 0 0 * * somejob 

Будет ли это работать в установленную дату, и если мой компьютер не будет на эту дату, он пропустит эту неделю?

Допустим, я поставил эту работу прямо сейчас. И тогда мой компьютер выключается на 5 дней от ноу на весь день.

Обычно мне нужно что-то запускать каждую неделю, но мой компьютер может не работать круглосуточно.

2
Вам нужно будет оставить машину включенной, чтобы задание было запущено ... nicorellius 13 лет назад 0

2 ответа на вопрос

4
David Z

Да, cronбудет запускаться задание, запланированное на определенное время, только если компьютер включен в это время. Он работает так, что каждую минуту он проверяет все запланированные задания cron, чтобы увидеть, соответствуют ли их поля времени текущей минуте, и если да, то запускает задание. Если нет, он пропускается. Нет концепции «сохранения» выполнения задания на более позднее время.

В вашей ситуации вы можете использовать файл маркера, чтобы указать последний раз, когда задание было запущено. Создайте небольшой скрипт или программу, которая выглядит следующим образом (это синтаксис псевдо-Bash):

if (marker file was last modified > 1 week ago); then run the job touch marker file fi 

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

2
notpeter

Anacron, скорее всего, то, что вы ищете:

Anacron является периодическим планировщиком команд. Он выполняет команды с интервалами, указанными в днях. В отличие от cron, он не предполагает, что система работает непрерывно.