Я столкнулся с проблемой с Cron. Мне нужно запустить задачу на рабочем столе, но дело в том, что я не могу гарантировать, что мой компьютер будет включен в указанное время.

Например мне нужно выполнить задачу слабо

Если я укажу

* * * * 6 user my_very_useful_task

my_very_useful_task будет выполняться каждую минуту в воскресенье, но мне нужно только один раз

Если я укажу

0 9 * * 6 user my_very_useful_task

my_very_useful_task будет выполнен в 9:00, но я не могу гарантировать, что компьютер будет включен в это время

1 ответ1

1

Используйте анакрон. Со страницы человека анакрон :

  Anacron can be used to execute commands periodically, with a  frequency
   specified in days.  Unlike cron(8), it does not assume that the machine
   is running continuously.  Hence, it can be used on machines that aren't
   running 24 hours a day, to control daily, weekly, and monthly jobs that
   are usually controlled by cron.

Вы можете найти краткое введение здесь. В любом случае измените файл /etc /anacrontab следующим образом: создайте строку с этим форматом

 period   delay   job-identifier   command

Период - это периодичность выполнения задания. Допустимые значения: 1 (ежедневно), 7 (еженедельно), N (= каждые N дней); задержка - время в минутах после загрузки, задание должно ждать перед выполнением; job-identifier - это файл в каталоге /var /spool /anacron, в котором будет храниться запись о последнем выполнении команды. Наконец, команда - это команда, которую вы хотите выполнить.

Пример строки в /etc /anacron:

  1 10 test.daily /home/my_name/bin/my_command

Это будет выполнять команду /home /my_name /bin /my_command ежедневно (опция 1), оставляя запись о ее выполнении в /var/spool/anacron/test.daily, и, если во время выполнения компьютер odwn, он будет ждать 10 минут после следующей загрузки, чтобы выполнить команду.

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