Как запланировать что-то запускать один раз с помощью anacron?

Часто в моих сценариях я планирую вспомогательные задачи позже в форме:

at now + 8 hours <<< "rm -f workfile.$$ >> $worklog 2>&1 " 

или

 at 11pm + $(date +%M) minutes <<< "./postMarketJob.sh $orderID &> $orderID.log" 

Проблема в том, что иногда ноутбуки или ПК, которые я использую в качестве серверов, отключены по истечении запланированного времени, поэтому на работе никогда не происходит.

Такая же проблема относится к записям crontab .

Я пытаюсь понять man-страницу anacron для Ubuntu.

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

Это не должно быть с anacron , и если это то, что может использовать только root , тогда я просто завершу свои вызовы sudo

ПОЯСНЕНИЯ

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

Похоже, мне, возможно, придется разработать свою собственную оболочку поверх atd / anacron, которая дает моим программам аналогичный интерфейс, но я надеялся, что что-то уже существует. fcron соответствует ли fcron счету и если он доступен для Ubuntu в каком-то репо.

3 Solutions collect form web for “Как запланировать что-то запускать один раз с помощью anacron?”

Anacron отлично подходит для того, что это такое … система для обеспечения выполнения заданий выполняется каждые N дней , после перезагрузки – там не так много контроля. Кроме того, он не является резидентным демоном и поэтому не может заменить crond или atd; он запускается во время загрузки (или при ручном вызове), ждет соответствующих интервалов, прежде чем проверять некоторые условия, а затем, как только все будет проверено или запущено, оно завершается.

Тем не менее, это может быть полезно в вашей ситуации, в качестве резервной копии для atd. Вы могли бы сделать что-то вроде:
echo '@monthly 0 custom1timejob script_or_cmd_here' >> /etc/anacrontab

Затем планируйте свое задание, не забудьте включить что-то в скрипт, который либо позволяет anacron знать, что работа была запущена (путем выполнения date +%Y%m%d > /var/spool/anacron/custom1timejob ), либо даже проще : просто удалите запись из anacrontab ( sed -i /custom1timejob/d /etc/anacrontab ).

Затем, в худшем случае, работа должна быть запущена в следующий раз, когда система загрузится.
(Убедитесь, что переменные RANDOM_DELAY и START_HOURS_RANGE в / etc / anacrontab [см. man anacrontab ], не собираются связываться со своими ожиданиями.)

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

Для периодических заданий вы можете комбинировать запись crontab с фиксированным расписанием и запись @reboot crontab. В записи @reboot выполняйте задачу только в том случае, если она не была выполнена за последние 24 часа (или любой другой интервал, который вы предпочитаете).

 42 5 * * * /usr/local/bin/myjob && touch /var/myjob/done @reboot if [ -z "$(find /var/myjob.done -mtime 1)" ]; then /usr/local/bin/myjob && touch /var/myjob/done; fi 

Это может быть ситуация, когда batch вариант может помочь.

С моей машины Rheel5 с песочницей мне удалось запланировать пакетное задание на две минуты в будущем, а затем остановить atd. Я пропустил пять минут, а затем снова начал атаковать. Когда atd начал, пакетное задание немедленно вышло.

invocation: batch "NOW+2 minutes" или любой приемлемый at вводе времени.

Я столкнулся с проблемами, пытаясь это сделать на Fedora 16. Несмотря на то, что страницы руководства, которые говорят, что они поддерживают ввод времени, команда сообщает, что он не принимает аргументов.

  • Есть ли веская причина запретить пользователям использовать cron / at?
  • SFTP, создающий новый каталог
  • Как я могу запустить две команды подряд из cron?
  • Ежедневный Cron за месяц в Debian
  • Использование групп для записи планировщика заданий
  • Что означает «INFO: задача XXX, заблокированная на протяжении более 120 секунд», в точности означает Linux?
  • что такое глобальная политика планирования Linux?
  • cron.hourly «выходит с кодом возврата 1» нет вывода в файл журнала
  • Есть ли удобный инструмент командной строки для управления заданиями Cron?
  • Запуск процесса в заданном временном окне
  • Сценарий Python работает с терминалом, но не работает в планировщике, для записи на внешний диск
  • Linux и Unix - лучшая ОС в мире.