2

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

0 0 0 * * somejob

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

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

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

2 ответа2

4

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

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

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

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

2

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .