Запуск скрипта один раз в день


Содержание материала:

Запускать скрипт один раз в день с помощью systemd

Я хочу запустить сценарий резервного копирования через 10 минут после загрузки моей машины, но только один раз в день. Возможно ли создать такие сценарии с помощью systemd?

1 ответ

Выполняет соответствующий файл .service через 15 минут после загрузки, а затем каждый день, пока система работает. Если вы перезагружаетесь несколько раз в тот же день, вы можете просто запустить скрипт резервного копирования mtime архива и пропустить этот запуск, если он меньше одного дня.

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

  • Главная
  • Cron — точно по расписанию.

Cron — точно по расписанию.

  • Автор: Уваров А.С.
  • 25.03.2011

В наших материалах посвященных Ubuntu Server время от времени затрагивается вопрос выполнения каких либо задач по расписанию. Чтобы не объяснять каждый раз одно и тоже мы решили создать данный материал, который должен помочь системным администраторам освоить и эффективно использовать планировщик задач в Linux.

В Ubuntu Server в качестве планировщика задач используется cron — планировщик с интерфейсом командной строки. Он является важной частью системы и начинает функционировать сразу после установки, исполняя различные системные задачи. Наша цель — поставить его себе на службу, тем более это не так сложно как кажется.

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

Чтобы создать или изменить пользовательское расписание наберите команду:

При первом запуске утилита предложит выбрать редактор, мы рекомендуем выбирать mcedit (требует установленного mc), либо другой редактор, с которым вы умеете работать.

Формат строк расписания имеет вид:

  • Минута — время в минутах от 0 до 59
  • Час — от 0 до 23
  • День — день месяца от 1 до 31
  • Месяц — от 1 до 12 либо буквенные обозначения jan — dec
  • День недели — от 0 до 6 (0 — воскресенье) или sat — sun
  • Команда — строка в формате командного интерпретатора которая будет исполнена, допускается запись типа команда1 && команда2 для запуска нескольких команд подряд.

Значения минут, часов, дней можно указывать следующим образом:

  • Значение — число обозначающее дату или время, допускается подстановочный знак * допускающий полный диапазон значений
  • Несколько значений — допускается указывать несколько значений через запятую, например 2,14,22
  • Диапазон значений — указывается через дефис, например 2-10
  • Шаг значений — указывается через дробь, в знаменатель которой ставится шаг, например */3 — каждое третье значение 0, 3, 6, 9 и т.д. В качестве числителя должен быть диапазон значений либо звездочка.

Рассмотрим следующий пример записи:

Она означает что каждый второй час с 8 до 19 (8, 10,12,14,16) по понедельникам запускать скрипт test в домашнем каталоге Иванова.

Сразу хотим предостеречь вас от распространенной ошибки, при указании периодического исполнения все даты должны быть указаны явно, звездочка обозначает полный диапазон значений, а не их отсутствие. Например если вам требуется исполнять некий скрипт каждый час с 10 до 15 неправильно будет:

Данная строка приведет к запуску скрипта каждую минуту в диапазоне с 10 до 15 часов. Правильно будет:

Данная запись позволит запускать скрипт в начале каждого часа указанного диапазона.

Кроме даты можно использовать ряд специальных строк:

  • @reboot — выполнять команду при перезагрузке
  • @yearly или @annually — выполнять 1 января, аналогично записи: «0 0 1 1 * «
  • @monthly — выполнять 1 числа каждого месяца, аналогично «0 0 1 * * «
  • @weekly — выполнять каждое воскресенье, равносильно «0 0 * * 0«
  • @daily или @midnight — ежедневно в полночь,»0 0 * * * «
  • @hourly — раз в час, «0 * * * * «

Так для ежедневного исполнения нашего скрипта каждую полночь можно написать:

Завершив составление расписания сохраняем файл и выходим из редактора. Пользовательское расписание будет сохранено в /var/spool/cron/crontabs под именем текущего пользователя.

Для системных и административных задач предусмотрен файл /etc/crontab синтаксис записей в нем отличается наличием дополнительного значения — пользователя, от чьего имени будет запущено задание:

Пример такой записи:

Согласно которой в 19:00 с понедельника по пятницу будет запускаться скрипт /etc/backup от имени пользователя root.

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

Как видим cron достаточно прост в использовании, но в тоже время предоставляет богатые возможности по настройке расписаний в Ubuntu Server. Надеемся данная статья поможет администраторам освоить данный инструмент.

Выполнение скрипта каждые 2 часа после определённого времени

Помогите с составлением условия в Cron. Нужно, чтобы скрипт начинал работу с 10 утра и потом включался раз в 2 часа до следующего дня. Из общих настроек я узнал, что таким способом( 0 10 * * * ) можно выполнить в 10 часов утра, а таким ( 0 */2 * * * ) раз в два часа. Предположил, что ответ на мой вопрос выглядит так: 0 10/2 * * * , но потом подумал о том, что это в 5 часов. Поэтому подскажите, как выполнить такое условие? И возможно ли его вообще выполнить?

2 ответа 2

Самый простой вариант:

По идее, должен ещё сработать вариант:

Но перед использованием такого варианта, я бы посоветовал протестировать его.

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

Связанные

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.6.35358

Планировщик CRON — запуск программ по расписанию

1. Зачем нужен cron?

Планировщик заданий позволяет выполнять команды на сервере хостинга по расписанию.

Управление планировщиком производится в разделе Планировщик заданий панели управления хостингом.

Особенности планировщика заданий хостинга:

  • минимальный интервал выполнения заданий — 1 минута;
  • данные со стандартных потоков вывода (stdout) и ошибок (stderr) направляются на «пустое» устройство (/dev/null).

2. Управление заданиями планировщика с помощью панели управления

Для того чтобы создать новое задание:

1. Войдите в панель управления хостингом, используя свой номер договора и пароль.

2. Перейдите в раздел Планировщик заданий.

3. Нажмите кнопку Создать задачу в правом верхнем углу.

4. На следующей странице введите название задачи.

5. Установите время, когда должно выполняться задание. Примеры приведены в п.4 этой инструкции.

6. Выберите в поле Тип файлаКоманда. При необходимости вы можете выбрать иной тип.

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

8. Заполните поле Путь к файлу или команда и нажмите кнопку Создать.


3. Примеры настройки команд

3.1. Запуск php-скриптов

Для запуска php-скрипта можно воспользоваться следующей командой:

cd $HOME/папка_сайта/docs/папка_скрипта/ && php $HOME/папка_сайта/docs/папка_скрипта/имя_скрипта.php

  • cd $HOME/папка_сайта/docs/папка_скрипта/ — переход в каталог, в котором размещен скрипт;
  • php — интерпретатор php;
  • $HOME/папка_сайта/docs/папка_скрипта/имя_скрипта.php — полный путь к скрипту.

3.2. Запуск php-скриптов с параметрами

wget -O — -q «http://nic.ru/cron.php?var1=xxx&var2=yyy»

  • wget — путь к программе wget,
  • http://nic.ru/cron.php?var1=xxx&var2=yyy — адрес скрипта с параметрами.

3.3. Запуск shell-скриптов

Для запуска shell-скрипта достаточно указать в качестве команды полный путь к скрипту:

Файл скрипта должен иметь атрибут исполнения.

4. Примеры настройки времени выполнения

Запуск задания раз в день

  • Час задаётся в пределах от 0 до 23.
  • Минута задаётся в пределах от 0 до 59.

Запуск задания раз в неделю

  • День недели задаётся в пределах от 1 (понедельник) до 7 (воскресенье).

Запуск задания раз в месяц

  • День месяца задаётся в пределах от 1 до 31.

5. Управление статусом заданий

Для выключения задания деактивируйте слайдер в поле Статус.

Для удаления задания перейдите к его настройкам и нажмите на кнопку Удалить.

Настройка Cron

Системным администраторам, да и обычным пользователям часто приходится автоматизировать различные задачи по обслуживанию и работе с Linux с помощью скриптов. Это очень удобно, вы просто запускаете скрипт, и он делает все что необходимо без вашего вмешательства. Следующий шаг в этом пути — настроить автоматически запуск нужного скрипта в нужное время.

Именно для этих задач в Linux используется системный сервис cron. Это планировщик, который позволяет выполнять нужные вам скрипты раз в час, раз в день, неделю или месяц, а также в любое заданное вами время или через любой интервал. Программа часто используется даже другими службами операционной системы. В этой статье мы рассмотрим как выполняется настройка Cron и разберем основные часто используемые примеры.

Как работает Cron?

Фактически, Cron — это сервис, как и большинство других сервисов Linux, он запускается при старте системы и работает в фоновом режиме. Его основная задача выполнять нужные процессы в нужное время. Существует несколько конфигурационных файлов, из которых он берет информацию о том что и когда нужно выполнять. Сервис открывает файл /etc/crontab, в котором указаны все нужные данные. Часто, в современных дистрибутивах там прописан запуск утилиты run-parts, которая запускает нужные скрипты из следующих папок:

  • /etc/cron.minutely — каждую минуту;
  • /etc/cron.hourly — каждый час;
  • /etc/cron.daily — каждый день;
  • /etc/cron.weekly — каждую неделю;
  • /etc/cron.monthly — каждый месяц.

В этих папках должны находиться скрипты, которые нужно выполнять с указанным интервалом. Скрипты должны иметь права на выполнение и их имя не должно содержать точки. Это очень сильно облегчает работу с планировщиком для новых пользователей. Также в файле crontab прописан запуск команды anacron, которая работает так же как и cron, только предназначена для задач, которые нужно выполнять раз в длительный период, например, раз в день, неделю, месяц, год.

Она позволяет выполнять их даже если компьютер работает не всегда и время от времени выключается. Дата выполнения задания последний раз записывается в файл /var/spool/anacron, а затем, при следующем запуске anacron проверяет был ли запущен нужный процесс в нужное время, и если нет, то запускает его. Сам же сервис cron больше рассчитан на выполнение задач в течение дня или с точно расписанным временем и датой.

Настройка Cron

Для настройки времени, даты и интервала когда нужно выполнять задание используется специальный синтаксис файла cron и специальная команда. Конечно, вы всегда можете отредактировать файл /etc/crontab, но этого делать не рекомендуется. Вместо этого, есть команда crontab:

Ее всегда желательно выполнять с опцией -e, тогда для редактирования правил будет использован ваш текстовый редактор по умолчанию. Команда открывает вам временный файл, в котором уже представлены все текущие правила cron и вы можете добавить новые. После завершения работы команды cron файл будет обработан и все правила будут добавлены в /var/spool/cron/crontabs/имя_пользователя причем добавленные процессы будут запускаться именно от того пользователя, от которого вы их добавляли.

Поэтому тут нужно быть аккуратным, и если вам нужно выполнять скрипты от рута, то и crontab нужно выполнить от рута, а не от пользователя. Это часто становиться причиной проблем.

Синтаксис crontab

Как я уже говорил, время задается особым синтаксисом, давайте рассмотрим синтаксис настройки одной задачи cron:

минута час день месяц день_недели /путь/к/исполняемому/файлу

Нужно сказать, что обязательно нужно писать полный путь к команде, потому что для команд, запускаемых от имени cron переменная среды PATH будет отличаться, и сервис просто не сможет найти вашу команду. Это вторая самая распространенная причина проблем с Cron. Дата и время указываются с помощью цифр или символа ‘*’. Этот символ означает, что нужно выполнять каждый раз, если в первом поле — то каждую минуту и так далее. Ну а теперь перейдем к примерам.

Примеры настройки cron

Сначала можно посмотреть задачи cron для суперпользователя, для этого можно воспользоваться опцией -l:

Вы можете удалить все существующие задачи командой -r:

Давайте предположим, что нам нужно запускать от имени суперпользователя наш скрипт по адресу /usr/local/bin/serve. Какой-нибудь обслуживающий скрипт. Самый простой пример — запускать его каждую минуту:

Далее, усложним, будем запускать каждый час, в нулевую минуту:

Запускаем в нулевую минуту нулевого часа, каждый день, это в 12 ночи:

0 0 * * * /usr/local/bin/serve

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

0 0 1 * * /usr/local/bin/serve

Можно в любой день, например, 15 числа:

0 0 15 * * /usr/local/bin/serve

В первый день недели первого месяца года, 0 часов 0 минут:

0 0 * 1 0 /usr/local/bin/serve

Или в нулевой день недели каждого месяца:

0 0 * * 0 /usr/local/bin/serve

Вы можете выбрать любую минуту, час и день недели, например, 15.30 во вторник:

30 15 * * 2 /usr/local/bin/serve

Понедельник считается первым днем, воскресенье — это седьмой или нулевой день. Еще можно писать сокращенное название дня недели, например sun — воскресенье:

30 15 * * sun /usr/local/bin/serve

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

0 7-19 * * * /usr/local/bin/serve

Если нужно запустить команду несколько раз, можно использовать разделитель «,». Например, запустим скрипт в 5 и 35 минут пятого (16:05 и 16:35), каждый день:

5,35 16 * * * /usr/local/bin/serve

Вы можете захотеть не указывать отдельно время, а просто указать интервал, с которым нужно запускать скрипт, например, раз в 10 минут. Для этого используется разделитель косая черта — «/»:

Топ-пост этого месяца:  Чтение роботом Google JavaScript как Googlebot может повлиять на поисковую оптимизацию

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

  • @reboot — при загрузке, только один раз;
  • @yearly, @annually — раз год;
  • @monthly — раз в месяц;
  • @weekly — раз в неделю;
  • @daily, @midnight — каждый день;
  • @hourly — каждый час.


Например, вот так просто будет выглядеть команда запуска скрипта раз в час:

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

sudo vi /etc/corn.daily/basckup

Скрипт должен выглядеть подобным образом. Теперь вы знаете как настроить cron, осталось проверить как все работает.

Отладка работы

После того как вы настроили правила, еще хотелось бы проверить работают ли они. Для этого ждем того времени, когда скрипт уже должен быть выполнен и смотрим лог cron. Иногда он находится в /var/log/cron, а иногда пишется в syslog. Например, у меня в crontab есть такая строка:

Она должна выполняться в 19.40 каждый день, теперь смотрим лог:

grep CRON /var/log/syslog

И видим что в нашем логе она действительно есть и выполняется целиком успешно. Если бы были какие-либо ошибки, то тут же было бы выведено сообщение.

Если нужно проверить скрипт, который находится в одной из специализированных папок, то тут еще проще, просто запустите run-paths, передав ей в параметр нужную папку или даже сам скрипт:

sudo run-paths /etc/cron.daily/

Дальше вы увидите весь вывод, включая вывод скрипта и сможете быстро понять в чем проблема.

Выводы

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

Создание сайта на WordPress

Что как и почему в WordPress

Задания Cron на выполнение php-скриптов

Задания Cron

Cron — это демон (программа, которая постоянно работает в системе в фоновом режиме), представляющий собой планировщик задач в UNIX-подобных операционных системах (включая сервер Apache), который в определенное время автоматически выполняет задания. Пример задания — копирование базы данных в определенное место на сайте (создание резервной копии).

Каждый пользователь системы может добавлять свои задания, указывая, в какое время и какие скрипты нужно выполнять от его имени. Задания могут выполняться, например, раз в день, раз в месяц, раз в год.. На вашем хостинге могут действовать ограничения на общее количество заданий и на то, как часто может выполняться задание (Например, не чаще 1 раза в 10 минут и не более 10 cron-заданий).

Задание (таблица crontab) включает 6 разделов, разделяемых пробелами или табуляцией.

Первые пять разделов задают время выполнения скрипта:
минуты: 0-59
часы: 0-23
день месяца: 1-31
месяц: 1-12
день недели: 0-7 (0 и 7 — воскресенье)
* — диапазон с первого до последнего.

команда задает скрипт, который нужно выполнять, например, скрипт на Perl или на php. Если команда передает текст в стандартный вывод, этот текст отправляется на e-mail пользователя, но стандартный вывод можно перенаправить в /dev/null:

Примеры задания времени выполнения скрипта:
0 22 * * * — каждый день в 22:00
0 0 1 * * — раз в месяц
0,30 10-22 * * * — каждые полчаса между 10:00 и 22:00
0/10 * * * * — каждые 10 минут

Права доступа

На скрипт рекомендуется выставить права доступа 755 (права на исполнение).

Добавление задания Cron в ISPmanager

В ISPmanager параметры выполнения для крона задаются в отдельных полях формы.

Войдите в Главное — Планировщик и нажмите кнопку «Создать«. В появившейся форме задайте Команду и Период (периодичность выполнения), а также выберите опцию Не отправлять отчёт по e-mail.

Команда — это путь до интерпретатора (у меня сработало просто php), пробел и полный путь до скрипта:

*** Полный путь до скрипта включает путь к корневой директории сервера, который можно узнать, выполнив в браузере:

Период — периодичность выполнения задания можно выбрать из списка (базовый режим):
каждый час — выполнение в 0 минут каждого часа.
каждый день — выполнение ежедневно ровно в 00:00.
раз в неделю — выполнение каждое воскресенье ровно в 00:00.
раз в месяц — выполнение первого числа каждого месяца ровно в 00:00.
раз в год — выполнение каждый год 1 января ровно в 00:00.

или задать вручную (экспертный режим)

Добавление задания Cron в cPanel

В cPanel войдите в «Дополнительно», «Задания Cron» и заполните форму добавления задания.

Особенности выполнения php-скрипта в задании Cron

В выполняемом php-скрипте не должны использоваться переменные окружения. Например, адреса следует прописывать явно. Дело в том, что при выполнении cron-задания в php-скрипте недоступны серверные переменные (например, $_SERVER, $_GET), т.к. веб-сервер Apache не участвует в работе демона cron и не заполняет переменные окружения.

В команде необходимо указать путь к php (может отличаться для разных хостингов), например, /usr/bin/php, затем пробел и полный путь к файлу скрипта:

Пример Cron-задания для выполнения php-скрипта один раз в день (0 0 * * * — задает периодичность)

Задания Cron на выполнение php-скриптов : 13 комментариев

А как подавить отсылку на емайл сообщений крона?

команда >/dev/null 2>&1

Доброго времени.
У вас отличный блог, странно, почему я на него раньше не попадал.
Столкнулся, не в первый раз уже, с работой cron в вордпресс.
В свое время, вырубил его функционал в wp-config, потому что при обращении к wp-cron.php с хостинга возвращает 404.
Покурив интернет, выяснил, что это происходит когда в hosts на хостинге прописано 127.0.0.1 localhost, а wordpress-у нужно, в данном случае, чтоб был прописан адрес моего блога. Хостинг виртуальный, провайдер что-либо делать отказался. Ну я отключил. А сейчас решил поставить wp super cache, но сия зверюга натыкаясь на 404 ставиться не хочет.
Не подскажете, где бы его чего почитать более-менее толковое про этот чертов функционал? Второй раз за месяц по интернету прохожусь с этими вопросами, но такое ощущение, что это или заговор, или я не там ищу.
Хочу отпинать или вордпресс, чтоб дергался крон сервера хостинга, либо научить кэширующий плагин работать с внешним кроном.
Благодарю.

Спасибо пост реально очень помог

Скрипты могут не работать из-за указания расширения в названии файла

А можно «для особо одаренных» или, вернее, для вообще ничего не знающих в php подробнее написать, куда вставить строку-php или что там еще.
Задание в Cron — это логически понятно — выставить время, а вот мне например, надо выставить задание для создания backup сайта. Какую команду и куда ее вписать?

Уууу полегчало, оказывается что так просто 🙂

Описано легко и понятно. Только у Вас получается, что в неделе 8 дней (от 0 до 7)
Поправьте, плз, а то чайники запутаются. 🙂

День недели может быть задан числом от 0 до 7, причем 0 и 7 соответствуют воскресенью.

Здравствуйте, у меня такой вопрос, куда вписывать путь к файлу PHP? хотелось бы по подробнее.

Можно ли отправить резервную копию на e-mail? (именно копию, а не отчёт). Если да, то как?

Фоновое выполнение скрипта на PHP без crontab

Озадачили меня тут написать демона на PHP. Т.е. скрипт, который будет заданное количество раз в заданное количество часов в случайное время (всегда случайное) выполнять определенные действия, и все это без использования cron’a.

До этого никогда не заморачивался, а тут после постановки задачи, начал было думать что так нельзя, что php скрипт надо вызывать браузером…ну задача то поставлена, надо выполнять.

Первая мысль — отключить ограничение времени выполнения скрипта. Запрещено хостером.

Вторая мысль — яваскриптом повторять аякс-запрос периодически (да хоть раз в секунду). — нельзя (требование заказчика).

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

1. Пачка сигарет, ночь, гугл, доки, книги, мануалы….
goto 1…

На выходе получаю:
Задача_1:
Реализовать генератор времен выполнения скрипта, исходя из заданных количества раз и количества часов. Хранить где-то эти времена.

Задача_2:
Работать после закрытия браузера

Задача_3:
Не вылетать после окончания ограничения времени выполнения скрипта

Задача_4:
Выполнять в нужное время какие-то действия.

Итак…
Пишем в конфиге исходные данные:

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

Далее сгенерируем и запишем в сессию массив времен запуска. Предварительно отсортируем массив по возрастанию, чтобы сначала шло раннее время (машину времени я еще не успел создать).

Теперь надо заставить скрипт работать, не обращая внимания на максимальное время выполнения, установленное сервером.
Принцип таков:
1) Определяем время начала работы скрипта;
2) Определяем установленное ограничение на время выполнения.
3) Запускаем цикл, внутри которого считаем текущее время и вычисляем общее время работы скрипта, сверяем текущее время со значениями в массиве времен запуска, и если совпадение есть, выполняем заданные действия (у меня они в файле exec.php). Для запуска файлов используем сокеты.
4) Повторяем цикл пока время работы скрипта не приблизится к максимально разрешенному. Я поставил — пока до максимального времени не останется 5 секунд.

Итак… считаем начальные данные по времени:

Собственно, цикл. Комментарии в коде.

Ну и, если разрешенное время подходит к концу, то завершаем цикл и благополучно запускаем этот же скрипт другие процессом (в 5 секунд точно уложимся)

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


Когда дописал все, озадачился полезным применением…Использовать его можно как службу. Он может следить за чем-то в сети и уведомлять Вас, например, по почте. И не надо никаких cron’ов.

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

Как запустить PHP скрипт в определенный интервал (например, один раз в день)?

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

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

Я делал это в прошлом, когда у меня не было доступа к cron:

Как добавить задание в планировщик cron в Linux/UNIX

Введение

Cron используется для планирования задач, которые будут выполняться периодически. Вы можете настроить команды или сценарии, которые будут повторяться в заданное время. Cron — один из самых полезных инструментов в Linux или UNIX. Служба(daemon) cron работает в фоновом режиме и постоянно проверяет файл /etc/crontab и каталог /etc/cron.*/. Он также проверяет каталог /var/spool/cron/.

Команда Crontab

Crontab — это команда, используемая для установки, удаления или вывода файла конфигурации cron, используемого для управления демоном cron. Каждый пользователь может иметь свой собственный файл задач crontab, и хотя эти файлы хранятся в /var/spool/cron/crontabs, они не предназначены для прямого редактирования. Вам нужно использовать команду crontab для редактирования или настройки ваших собственных заданий cron.

Типы файлов конфигурации cron

Существуют различные типы файлов конфигурации:

Системный Сrontab: Обычно используется системными службами и критическими заданиями, требующими привилегий root доступа. Шестое поле (см. ниже описание поля) — это имя пользователя которое по умолчанию присвоено команде. Это дает системе возможность запускать команды от разных пользователей.

Пользовательский crontab: Пользователь может установить свои собственные задания cron, используя команду crontab. Шестое поле — это команда для запуска, и все команды будут выполняться от пользователя, который задал их в своем собственном crontab.

Как установить, создать или отредактировать собственные задания cron?

Чтобы отредактировать файл crontab, введите следующую команду в командной строке оболочки Unix / Linux:

Синтаксис crontab (описание полей)

Где цифры обозначают:

1: Минуты (0-59)
2: Часы (0-23)
3: День (0-31)
4: Месяц (0-12 [12 == Декабрь])
5: День недели (0-7 [7 или 0 == sunday])
/path/to/command — имя скрипта или команды для выполнения по расписанию

Легко запоминаемый формат:

Пример

Как использовать операторы?

Оператор позволяет указать несколько значений в поле. Существует три оператора:

Звездочка (*): этот оператор задает все возможные значения для поля. Например, звездочка в поле «Часы» будет эквивалентна каждому часу, а звездочка в поле месяца будет эквивалентна каждому месяцу и т.д.

Запятая (,): Этот оператор задает список значений, например: «1,5,10,15,20,25».

Тире (-): Этот оператор задает диапазон значений, например: «5-15» дней, что эквивалентно набору «5,6,7,8,9 … …, 13,14,15», при использования оператора «Запятая».

Слеш (/): этот оператор задает значение шага, например: «0-23 /» можно использовать в поле часов, чтобы указывать выполнение команды каждый час. Шаги также разрешены после звездочки, поэтому, если вы хотите выполнять что-то каждые два часа, просто используйте «*/2».

Используйте специальную строку, чтобы сэкономить время
Вместо первых пяти полей вы можете использовать любую из восьми специальных строк. Это не только сэкономит ваше время, но и улучшит читаемость.

Запускается один раз в час, «0 * * * *».

Пример:

Подробнее о файле /etc/crontab и /etc/cron.d/*

/etc/crontab — это файл crontab системы. Обычно используется только пользователем root или для настройки системных задач. Обычные пользователи должны использовать команду crontab для установки и редактирования своих заданий. /var/spool/cron/ или /var/cron/tabs/ — это каталог для личных файлов пользователя crontab.

Типичные записи файла /etc/crontab:

Первым делом необходимо определить среду. Если указатель оболочки упущен, cron будет использовать значение по умолчанию, которое равно sh. Если переменная PATH не указана, расположение файлов будет абсолютным. Если перемененная HOME упущенная, cron будет использовать домашний каталог.

Кроме того, cron считывает файлы в каталоге /etc/cron.d/. Обычно это файлы демона системы, такие как sa-update или sysstat. В качестве пользователя root, для настройки заданий cron, вы можете использовать каталоги которые указаны ниже. Здесь вы можете напрямую запускать свои скрипты. Команда run-parts запускает скрипты или программы в каталоге через /etc/crontab файл:

Специальная строка Значение
@reboot Запускается только один раз при запуске.
@yearly Запускается раз в год, «0 0 1 1 *».
@annually Такое же, как у @yearly
@monthly Запускается раз в месяц, «0 0 1 * *».
@weekly Выполняется раз в неделю, «0 0 * * 0».
@daily Выполняется один раз в день, «0 0 * * *».
@midnight Такое же, как у @daily.
@hourly
Каталог Описание
/etc/cron.d/ Поместите в эту директиву все скрипты и вызовите их из файла /etc/crontab
/etc/cron.daily/ Запуск всех скриптов один раз в день
/etc/cron.hourly/ Запуск всех скриптов один раз в час
/etc/cron.monthly/ Запуск всех скриптов один раз в месяц
/etc/cron.weekly/ Запуск всех скриптов один раз в неделю

Сохранение списка заданий в файл

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего Блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University.

Планировщик задач (Task Scheduler)

Первое, на что следует обратить внимание еще до создания задач — запущена ли служба «Планировщик заданий». Эта служба могла быть отключена при настройке системных служб для освобождения памяти в то время, когда использование Планировщика задач не было нужно. Теперь, если запланированные задания будут выполняться регулярно, то этот сервис надо переключить в автоматический режим запуска. Чтобы убедиться, что сервис запущен выполните Пуск — Выполнить — services.msc. Откроется окно, показанное ниже:

Найдите службу «Планировщик заданий» и убедитесь, что в поле Состояние у нее Работает, а в поле Тип запуска — Авто. Если это не так, то дважды щелкните по имени службы и в открывшемся окне скорректируйте значения на те, которые указаны выше (для этого нужно иметь привилегии администратора, т.е. Ваша учетная запись должна быть из группы Администраторы).

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

Теперь создадим задачу.

Откройте Панель управления и щелкните по Назначенные задания. Откроется такое окно:

Для создания нового задания щелкните по Добавить задание.

В этом окне надо выбрать программу, которая будет запускаться Планировщиком. Как правило, нужная программа в этом списке отсутствует и ее надо найти при помощи кнопки Обзор. Для примера, я создал на диске С папку Scheduler и поместил в нее пакетный файл test.bat, в котором находится последовательность команд, которые надо запускать в определенное время. Нажав кнопку Обзор найдите файл, который будет запускаться Планировщиком и нажмите Открыть. Если все сделано правильно, то мастер создания нового задания выведет следующее окно:

В поле Название нужно указать название этого задания, которое будет отображаться в окне Планировщика. Название может быть любым. Присвойте заданию такое имя, чтобы потом, при открытии Планировщика, можно было сразу вспомнить, что делает это задание. В данном примере я назвал задание «Тестирование Планировщика».

Затем нужно выбрать период запуска этого задания. Возможны следующие варианты:

  • Ежедневно. Задание будет запускаться ежедневно, либо только по рабочим дням, либо через несколько дней в указанное время. Все эти параметры можно будет выбрать в следующем окне, о чем пойдет речь ниже.
  • Еженедельно. В следующем окне можно будет указать — каждую ли неделю нужно запускать задание и выбирать дни недели, по которым задание будет запущено в определенное время.
  • Ежемесячно. Далее можно будет указать в какие месяцы года надо запускать задание и выбирать по каким числам месяца или по каким дням месяца в определенное время задание будет запущено.
  • Однократно. В следующем окне мастера можно будет выбрать дату и время запуска задания. Больше это задание выполняться не будет.
  • При загрузке компьютера. Следующего окна при выборе этого варианта нет, что логично, т.к. при таком типе запуска задание будет выполняться каждый раз при загрузке компьютера. Данный тип запуска не требует входа пользователя, задание будет запущено от имени того пользователя, которое будет нужно указать в следующем окне.
  • При входе в Windows. Этот тип запуска похож на предыдущий с тем отличием, что задание будет выполнено только когда пользователь войдет в Windows, т.е. введет свои логин и пароль.

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

Ежедневно

При ежедневном типе запуска есть возможность выбора: запускать ли задание ежедневно, либо запускать его только по рабочим дням (естественно, что праздничные дни на неделе считаются рабочими, задание запускается с понедельника по пятницу, включительно), либо запускать задание с периодичностью, например, один раз в три дня. В этом же окне нужно выбрать время запуска задания. «Дата начала» позволит отложить первый запуск задания до определенной даты, т.е. если сегодня первое число месяца, а «Дата начала» установлена на 10-е, то задача начнет выполняться с десятого числа, не смотря на то, что ее запуск запланирован как ежедневный.

Еженедельно

При еженедельном типе запуска есть возможность запускать задачу по определенным дням недели, отметив галками соответствуюшие дни недели в окне, показанном выше на картинке. Можно указать, что задание должно выполняться через неделю, т.е., например, первую неделю в понедельник, среду и пятницу, вторую неделю задание не выполняется, в третью выполняется в понедельник, среду, пятницу, четвертую не выполняется и т.д. Также, нужно указать время, в которое задание будет выполняться в указанные дни недели.

Ежемесячно

При ежемесячном типе запуска задания необходимо отметить месяцы, по которым будет запускаться задание и указать число, когда задание будет запущено. Обратите внимание на то, что последнее число месяца может быть 28-е, 29-е, 30-е или 31-е, поэтому, если задание необходимо выполнить в конце месяца, то его запуск лучше запланировать на первое число следующего месяца в 00:01. Если есть необходимость не указывать конкретное число для запуска задания, а запускать его только, например, по третьим пятницам указанных месяцев, то можно переключить соответствующий переключатель и выбрать из полей со списками требуемые значения.

Однократно

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

При загрузке компьютера

Как уже говорилось выше, при таком типе запуска задание будет выполняться при каждой загрузке компьютера, до логина пользователя.

При входе в Windows

Такое задание будет выполняться при логине пользователя.

Выберите наиболее подходящее под требования к периодичности запуска расписание, даже если оно не полностью соответствует необходимому. Например, если задачу необходимо выполнять по рабочим дням в 21:00, а по выходным — в 19:00, то на этом этапе создания задачи следует выбрать еженедельный запуск задачи, а после ее создания скорректировать расписание нужным образом. Пример такой настройки показан на рисунке ниже.

После того, как начальное расписание задано, — нажмите кнопку Далее. Пример открывшегося окна показан на рисунке ниже.

В этом окне необходимо ввести имя и пароль под которыми будет запускаться задание. По умолчанию имя пользователя равно имени текущего пользователя. Будьте внимательны при вводе пароля, т.к. он скрывается «звездочками». Если пароль очень сложный, то лучше набрать его в любом текстовом редакторе (например, Блокнот) и скопировать в соответствующие поля. Если при вводе пароля будет допущена ошибка, то никакого сообщения об этом выведено не будет, но задание выполняться не будет. Также, имейте ввиду, что в Windows XP недопустимо использовать пустой пароль, хотя учетная запись пользователя может быть с пустым паролем. Пустой пароль также приведет к тому, что задание не будет выполняться. Чтобы исправить это в Windows XP задайте учетной записи пароль и введите его в создаваемое задание.


Назначенное задание будет запущено от имени пользователя, которое было введено. Т.е. можно из-под пользователя с ограниченными правами (группа Пользователи) запускать задания от имени учетной записи без ограничения прав (группа Администраторы). Для этого нужно, создавая задание, ввести вместо предлагаемого имени текущего пользователя имя пользователя, имеющего административные полномочия (пользователя, входящего в группу Администраторы). Это приведет к тому, что при выполнении задания, программа сможет получить доступ к тем функциям и файлам, доступа к которым у обычного пользователя нет.

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

После того, как имя пользователя и пароль введены, нажмите кнопку Далее.

Если расписание запуска полностью удовлетворяет требованиям, то после нажатия кнопки Готово, в окне, показанном на рисунке ниже, создание будет завершено и в окне Назначенные задания в Панели управления появится вновь созданное задание. Если расписание запуска задачи требует дальнейшей, более тонкой донастройки, то отметьте пункт «Установить дополнительные параметры. » и нажмите кнопку Готово. В этом случае, будет открыто окно для настройки дополнительных возможностей расписания запуска задачи.

Если есть необходимость настроить дополнительные параметры запланированного задания, то щелкните правой кнопкой по созданному заданию в папке Назначенные задания, находящейся в Панели управления и выберите Свойства. Если дополнительные настройки будут меняться сразу после создания задания, то в последнем окне при создании задания (рисунок в предыдущей главе) нужно поставить галку «Установить дополнительные параметры. » и нажать Готово. Любая из этих последовательность действий приведет к тому, что откроется такое окно.

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

На первой вкладке Задание, внешний вид которой показан на рисунке в самом начале статьи, находятся основные сведения о запланированной задаче. Это:

  • Путь к файлу, в котором сохраняются настройки задачи. На рисунке этот путь C:WINNTTasksТестирование Планировщика.job
  • В поле Выполнить указан путь к программе, которая запускается по расписанию. В данном примере это C:Scheduler est.bat
  • Кнопка Обзор позволяет изменить путь к запускаемой программе (если файл программы был перемещен) или выбрать другую программу. Тоже самое можно сделать вручную, введя путь и имя исполняемого файла в поле Выполнить, расположенное над кнопкой Обзор.
  • Следущее поле Рабочая папка содержит путь к папке, где программа, запуск которой запланирован, хранит свои файлы и создает отчеты о работе, если путь к отчетам не указан в самой программе. При помощи значения этого поля можно перенаправить создание отчетов в другую папку, а не в C:Scheduler, как в примере.
  • Текстовое поле Комментарий позволяет хранить описание запускаемой задачи. Это удобно при работе за компьютером нескольких людей, чтобы не возникало необходимости разбираться с тем, для чего задание было создано.
  • Следующее поле Пользователь содержит в себе имя пользователя от имени которого будет запущена задача. Это значение подробно было рассмотрено в конце предыдущей главы.
  • Кнопка Задать пароль предназначена для смены пароля, если было изменено имя пользователя в соответствующем поле. Практической пользы от этой кнопки нет, т.к. при попытке сохранить изменения в задании (в т.ч. и имени пользователя) будет выдан запрос пароля.
  • Галка Включено. служит для включения или отключения заданий. Ее снятие приведет к тому, что задание будет храниться в папке Назначенные задания, но выполняться не будет. Это удобно, когда задание выполняется время от времени по сложному расписанию. Отключение задания на время помогает избежать необходимости его удаления и создания, когда его потребуется выполнять вновь.

Внешний вид следующей вкладки Расписание:

Эта вкладка предоставляет все возможности по управлению расписанием запуска запланированной задачи, которые значительно шире, чем те, которые была возможность настроить в мастере создания задач и о которых шла речь в предыдущей главе. Рассмотрим все настройки по порядку:

  • Вверху вкладки выводится текущее расписание для запланированной задачи.
  • В поле со списком Назначить задание можно изменить тип расписания запуска. Все типы были рассмотрены в предыдущей главе, поэтому останавливаться на них не будем.
  • Поле Время начала содержит время, в которое будет запущена задача.
  • Кнопка Дополнительно открывает окно, показанное ниже.

В этом окне есть несколько дополнительных настроек расписания, о которых стоит сказать отдельно.

  • Дата начала. Позволяет указать дату первого запуска задания, после которой задание будет выполняться с заданным расписанием. Это поле может быть востребовано, когда запуск задачи должен быть начат в определенную дату, а не сразу после создания.
  • Дата окончания. Это поле позволяет указать дату последнего выполнения задания. После указанной в этом поле даты задание исполняться не будет. Чтобы появилась возможность указать дату окончания нужно поставить соответствующую галку.
  • Группа полей Повторять задание. Если поставить одноименную галку, то появится возможность настроить интервал запуска задания. Например, можно запускать задание каждые 30 минут в течение 8-ми часов или до определенного времени. Очень удобная возможность для решения определенных задач мониторинга событий. К примеру, иногда требуется проверять наличие в определенной папке файла с периодом в пять минут в течение рабочего дня и если он там появился, то запустить скрипт, который выполнит над файлом определенные действия.

Галка Остановить задание предназначена для того, чтобы завершить выполняемое задание, когда истекло время его выполнения. Например, в поле Выполнять до указано время 18:00. Если задание очень большое и исполняется полчаса, то запуск его в 17:55 приведет к тому, что задание фактически будет работать до 18:25. Если такое положение дел нежелательно, то нужно поставить галку Остановить задание. В этом случае выполнение задания будет прекращено в 18:00, несмотря ни на что.

  • Следующая группа настроек относится к выбранному типу запуска задания, и разная для каждого типа запуска. Все типы их настройки были рассмотрены в предыдущей главе.
  • Галка Показывать несколько расписаний открывает широчайшие возможности по гибкой настройке расписания для одной задачи. Если ее поставить, то вверху вкладки появляются поле со списком, в котором перечислены все созданные для задачи расписания и кнопки Создать и Удалить для управлениями расписаниями.

    Создание нескольких расписаний способно удовлетворить практически любое пожелание по времени и периодичности запуска задания. Например, можно настроить задание таким образом, что оно будет запускаться в понедельник в 19:00 каждые 10 минут в течение 2-х часов, во вторник в 20:00 каждые 30 минут в течение часа, в среду в 14:00 каждые 5 минут до 20:00 и т.д. Как уже становится понятно, для реализации такой тонкой настройки запуска задания нужно создать расписание при помощи кнопки Создать. Каждое созданное расписание добавляется в поле со списком вверху вкладки. Для настройки или удаления одного из расписаний его нужно выбрать из списка и далее либо настроить так, как это было описано выше, либо удалить при помощи соответствующей кнопки.

    Чтобы проиллюстрировать описанные действия, я создал расписание, которое будет запускать задачу по рабочим дням в 21:00, а по выходным в 9:00. Для этого я создал два расписания:

    Последняя третья вкладка Настройка, показанная ниже, содержит в себе дополнительные настройки задания.

    • Галка Удалить задание, если нет его повторения по расписанию, предназначена для того, чтобы удалить «одноразовые» задания из папки Назначенные задания в Панели управления. Установка этой галки приведет к удалению задания, если расписание его запуска не предусматривает последующих его запусков.
    • Поле Выполнять не дольше, чем позволяет указать максимальное время выполнения задания. Можно принудительно остановить выполнение, если задание выполняется дольше указанного времени.
    • Группа настроек Время простоя позволяет запускать задание только, если компьютер простаивает какое-то время. Полезно для планирования запуска ресурсоемких задач, которые отнимают при своем выполнении все время процессора, загружая его на 100%.
    • Первые две галки в группе Управление электропитанием позволяют указать запускать ли запланированную задачу на ноутбуке, если он работает от батарей. Последняя, третья галка, позволяет «будить» компьютер, когда он находится в ждущем режиме (режим низкого потребления электроэнергии, когда отключены практически все устройства компьютера, но он включен и восстанавливает свою работу при выводе из ждущего режима в течение пары секунд, причем, все приложения, открытые на момент перехода в ждущий режим не завершаются, а также ждут вывода компьютера из ждущего режима).

    Чтобы сохранить все внесенные изменения нужно нажать кнопку ОК, после чего будет выдан запрос на ввод пароля для того пользователя, имя которого указано на первой вкладке.

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

    В следующей главе приведены примеры наиболее распространенных расписаний для запуска заданий при помощи Планировщика.

    Теперь рассмотрим несколько вариантов расписаний настроенной задачи. Все расписания запускают файл test.bat из C:Scheduler. Я сначала создал задачу при помощи мастера, а затем в окне Планировщика щелкнул по ней правой кнопкой мыши и выбрал Свойства.

    Ежедневный запуск задачи

    Первый пример настройки показывает, как настроить задачу на ежедневный запуск в 21:00. Самый простой вариант расписания, которое создается мастером без последующей донастройки. Вкладка Расписание в Свойствах созданной задачи выглядит так:

    Такое расписание, на мой взгляд, не требует каких-то дополнительных комментариев. Задача запускается каждый день в 21:00.

    Запуск задачи через день

    Это расписание отличается от предыдущего лишь тем, что оно запускается раз в два дня.

    Как видно на скриншоте, в поле Расписание по дням установлено значение — Каждый 2 день. Это приведет к тому, что задача будет запущена раз в два дня. В это поле можно ввести любое значение.

    Отложенный ежедневный запуск задачи

    В этом примере запланирован ежедневный запуск задачи, но первый ее запуск отложен на 10 дней.

    Как видно, в Дополнительных настройках установлена дата начала работы задания на 17-е число, притом, что задание создано 6-го. Таким образом, мы создали задачу, но отложили начало ее ежедневного запуска на 10 дней.

    Ежедневный запуск задачи до определенной даты с последующим удалением задачи из Планировщика

    При таком расписании задача запускается ежедневно до определенной даты. Когда дата последнего запуска достигнута, задача удаляется из Планировщика.

    Такое расписание запускает задачу каждый день, начиная с 7-го и заканчивая 15-м числом, о чем говорят Дополнительные настройки, показанные на рисунке выше. На вкладке Настройки показано то, что установлена галка Удалить задание. Установка этой галки приведет к тому, что задание, после последнего, запуска будет удалено из Планировщика.

    Запуск задачи в разные дни недели в разное время

    Этот пример демонстрирует настройку расписания запуска задачи Планировщиком в разные дни недели в разное время.

    При помощи такого расписания реализована следующая задача. Задание запускается в рабочие дни в 21:00, а в выходные — в 9:00. На вкладке Расписание была установлена галка Показывать несколько расписаний, затем были отмечены галками рабочие дни и выставлено время запуска задачи в 21:00. Потом при помощи кнопки Создать было создано второе расписание, тип его запуска был изменен на Еженедельно и поставлены галки около выходных дней. Теперь в разные дни задача будет запущена в разное время.

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

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

    Такое расписание запускает задачу каждую минуту в течение рабочего дня и только в рабочие дни. Такое расписание будет полезно для проверки из скрипта наличия в определенной папке файла. Например, филиалы ежедневно в разное время заливают на ftp в центральном офисе отчеты о проделанной работе за предыдущий день, которые должны быть автоматически разархивированы и импортированы скриптом в корпоративную базу данных. Планировщик запускает скрипт, который проверяет, появился ли файл в указанной папке, если появился, то выполняет с ним необходимые действия, а если файла нет, то скрипт завершается.

    Старт расписания запланирован каждый рабочий день в 8:00. В Дополнительных настройках указано, что задача запускается снова и снова каждую минуту до 19:00. Таким образом, максимальная задержка при обработке появившегося файла в папке составит секунды.

    Ежемесячный запуск задачи

    Этот пример показывает, как настроить запуск задачи один раз в месяц. Как правило, такая периодичность нужна для запуска скриптов, которые анализируют логи за прошедший месяц, создают статистику и помещают логи в архив.

    Запуск задачи запланирован на первую минуту нового месяца. Это связано с тем, что в месяце может быть 28, 29, 30 или 31 день. Чтобы не создавать для каждого месяца свое расписание, логичнее выполнять задачу первого числа каждого месяца.

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

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

    Мало создать задание и написать программу или скрипт, которые будут запускаться Планировщиком. Нужно обязательно выполнить тестовый запуск задачи, чтобы убедиться, что задача работает именно так, как планировалось и при ее запуске не возникает проблем. Сделать это достаточно просто.

    Щелкните правой кнопкой по созданной задаче в Планировщике и выберите пункт Выполнить. Задача будет немедленно запущена, не смотря на расписание.

    Самые распространенные ошибки при создании задачи, которые приводят к незапуску задачи в указанное время или к неудаче при тестовом запуске задачи — неправильно введенные пароль. Не менее часто можно столкнуться с тем, что задача не запускается из-за пустого пароля у учетной записи. Windows 2000, в отличие от Windows XP, запустит задачу из-под учетной записи с пустым паролем. В XP запуск задачи выполнен не будет. Решение этой проблемы — задать пароль для учетной записи и указать его в настройках задачи.

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

    Еще одна проблема с запуском запланированной задачи может быть вызвана незапущенным сервисом Планировщика. Обратите внимание на то, что если есть запланированные задачи, то режим запуска службы Планировщик заданий должен быть Авто. Если режим запуска службы Вручную, то мастер создания задачи запуститься без проблем, т.к. Windows самостоятельно запустит необходимый сервис при открытии мастера, а после перезагрузки сервис Планировщика останется незапущенным и задание выполняться не будет. О том, как проверить и установить режим запуска службы Планировщик заданий в Авто, было рассказано выше.

    При удачном прохождении тестового запуска задачи, в главном окне Планировщика, в графе Прошлый результат появится значение 0х0. Это говорит о том, что запуск задачи был успешным. Если запуск задачи по каким-то причинам не удался, то в графе Состояние будет написано «Запуск не удался». Чтобы узнать причину незапуска задачи откройте журнал работы Планировщика.

    На рисунке показано меню Дополнительно Планировщика. Чтобы открыть журнал работы выберите нижний пункт меню Просмотр журнала. Пример ошибки, записанной в журнал, показан ниже. «Тестирование Планировщика.job» (test.bat) 14.03.2004 20:51:20 ** ОШИБКА ** Попытка использования учетной записи задания окончилась неудачей, поэтому задание выполнено не было. Специфическая ошибка: 0x8007052e: Вход в систему не произведен: имя пользователя или пароль не опознаны. Проверьте правильность указания имени пользователя и пароля и повторите попытку.

    Чтобы получить указанную ошибку я специально ввел неверный пароль пользователя в задании и запустил его при помощи команды Выполнить так, как об этом говорилось выше.

    Таким образом, использование журнала работы Планировщика поможет быстро устранить причину незапуска задания.

    Журнал работы находится в файле SchedLgU.Txt, который расположен в systemroot, т.е. в той папке, куда установлена Windows. Кодировка этого файла — Юникод.

    Графа Состояние Планировщика может содержать значения, объяснение которых приведено в таблице ниже.

    Пусто

    Задание в данный момент не выполняется, либо было успешно выполнено

    Выполняется

    Задание выполняется в данный момент

    Пропущено

    Одна или несколько попыток выполнить задание были пропущены

    Запуск не удался

    Последняя попытка запуска задачи не удалась

    Успешные тестовые запуски задачи не отменяют необходимости постоянного контроля за выполнением задачи. Введя в «боевую» эксплуатацию задание, не забывайте периодически просматривать журнал и Планировщик. Более разумное решение — создавать лог-файл работы самой задачи и по завершении ее работы открывать этот лог. К примеру, приходя утром на работу, Вы будете видеть открытое окно редактора с лог-файлом. Это вынудит невольно просмотреть результат выполнения задачи, а отсутствие открытого окна будет означать проблемы, возникшие либо при запуске задачи, либо в ходе ее выполнения. Это позволит оперативно исправить проблему.

    Нередко возникает необходимость выполнять автоматически те или иные действия на компьютерах пользователей в локальной сети. Администратор может управлять заданиями Планировщика на компьютерах пользователей удаленно, по сети. Учетная запись, из-под которой будет производиться управление заданиями Планировщика должна обладать правами Администратора на компьютере пользователя.

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

    Среди других общих ресурсов на компьютере пользователя есть и Назначенные задания. Откройте эту папку. Пример окна показан на следующем рисунке.

    Чтобы создать новое задание на компьютере пользователя, щелкните правой кнопкой и выберите в меню Создать Назначенное задание, так, как это показано на рисунке выше. После этого на компьютере пользователя будет создано новое пустое задание. Мастер запущен не будет, т.к. задание создается по сети, а не локально. После того, как будет введено имя нового задания, нужно настроить его свойства. Это можно сделать в окне, открывающемся по клику правой кнопки по новому заданию, при выборе пункта меню Свойства.

    При настройке задания не забывайте, что задание настраивается удаленно, а не локально.

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

    В Windows XP и старше есть утилита командной строки schtasks, которая позволяет управлять назначенными заданиями на компьютерах в локальной сети. Эта утилита будет незаменима для управления заданиями из скриптов. Справку о ключах для запуска этой утилиты можно получить, набрав в командной строке

  • Добавить комментарий