Главная страница » Шедулер что это такое

Шедулер что это такое

  • автор:

Task Scheduler — что это за программа и нужна ли она?

Планировщик задач Windows, где находятся запланированные задания — системные и сторонних программ.

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

Как открыть планировщик задач? Например просто напишите планировщик задач в поиске на панели задач (внизу) и в результатах найдете нужное.

Но мне кажется, что лучше всего запускать Task Scheduler (планировщик задач) при помощи команды. Это просто универсально, работает на Windows 7, Windows 10 и наверно даже в Windows XP.

Итак, зажмите Win + R, появится окошко Выполнить, вставьте команду:

Нажали ОК — запустится планировщик задач:

Слева как видите есть разделы, их там много, но обычно интерес представляет раздел Библиотека планировщика заданий (Task Scheduler Library):

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

  1. AnVir Task Manager — от утилиты по анализу автозагрузки, в ней кстати и планировщик можно посмотреть.
  2. CCleaner Update — от известной чистилки CClenaer, судя по наличию слова Update задание нужно для проверки обновлений.
  3. MailRuUpdater — от софта Маил ру, тоже наверно нужно для обновления.
  4. OneDrive Standalone Update Task — связано с облаком от Microsoft, и тоже имеет отношение к обновлению.
  5. Opera scheduled Autoupdate — браузер Опера, тоже связано с обновлением.

Это только пример. Их может быть много, намного больше. Если Windows только установлена, то их будет минимальное количество.

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

Давайте возьмем одно задание и разберем его для примера, пусть это будет Anvirlauncher. Чтобы вызвать свойства — нажмите по нему два раза мышкой, после чего появится окно с информацией:

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

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

Важная информация находится и на вкладке Действия — что именно запускается, какой процесс и из какой папки:

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

На остальных вкладках уже информация не особо интересна.

Кстати вот например взять задание OneDrive Standalone Update Task, у него на вкладке Триггеры указано что запускается только один раз:

Правда здесь какой-то глюк, дата и время указано странно — 14:00 01.05.1992, но возможно это специально так, чтобы задание выполнилось один раз и неважно какая дата сейчас, главнее не раньше, чем 01.05.1992, что в принципе быть невозможно. Поэтому задание запустится один раз в любом случае. И кстати такие задания, где запуск один раз и дата уже прошла — можно удалить, они просто не нужны.

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

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

О многозадачности и планировщике задач (шедулер)

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

В самом первом приближении компьютер состоит из трёх частей: процессор, память и шина данных. Процессор умеет считать, память — хранить данные, а шина данных позволяет передавать данные между первыми двумя.

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

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

Тут сразу у современного пользователя возникает вопрос: а где мышка, клавиатура и монитор? А это уже надстройки над нашим конвейером. Через прерывания контроллера переферийных устройств в стройный ряд инструкций и данных, летящих из памяти вклиниваются и аппаратные команды, которые заставляют наш конвейер прерваться и перейти к определённому адресу, где расположена программа-обработчик прерывания.

В Linux можно посмотреть статистику по прерываниям с помощью команды vmstat — под system есть колонка in (сокращение от interrupts) — количество прерываний в секунду (не все они аппаратные).

Данная команда будет выводить статистику каждую секунду 5 раз:

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

Важно, что только через прерывания компьютер и программы понимают, что во внешнем мире что-то произошло. К примеру, прошло какое-то время — по прерыванию от аппаратного таймера.

Как вы думаете, что произойдёт, если по какой-то причине перестанут поступать прерывания от таймера? Или таймер начнёт медленнее тикать?

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

Изображение Шпаргалка по командам Linux, FreeBSD и MacOS

Иллюзия многозадачности

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

Поэтому нам нужно сделать из однозадачной системы иллюзию многозадачной. Для этого мы поделим время работы процессора между всеми задачами. Точнее — поделим всё время работы на небольшие части, а в эти небольшие части (time slice), в которые будем исполнять то одну задачу, то другую. Если делать это очень быстро — создаётся иллюзия параллельной обработки нескольких задач одновременно.

И тут появляется планировщик

Возникает логичный вопрос: а кто будет заниматься созданием иллюзии многозадачности? Какая-то программа для управления программами (этакая мета-программа) — как раз планировщик. Причём от него зависит довольно многое — на сколько хорошо будет работать иллюзия параллельного исполнения множества процессов.

Поэтому наша программа-планировщик должна стараться раздавать имеющиеся кванты времени “справедливо”. При этом понятие “справедливо” — тоже довольно обширное. К примеру, пользователь будет недоволен, если воспроизведение фильма будет подвисать, при этом не сильно расстроится, если фоновая задача будет притормаживать.

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

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

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

К слову, может быть кто-то знает альтернативные подходы к реализации вычислительных систем, не процессор-шина-память?

Что-то может пойти не так и какая-то программа зависнет — что тут делать, как решать, что нужно передать управление, что делать с этой программой? Опять же, понять, что она реально зависла для произвольной программы мы не можем…

И тут остаётся использовать те самые аппаратные прерывания. Если программа сама не передаёт управление — через прерывание таймера мы можем понять, что время пришло переключить управление. Ну и в целом — можно по таймеру следить за “справедливостью” выделения процессорного времени. На него ориентироваться при планировании исполнения процессов.

Пара слов о проблемах реализации многозадачности

Работа с системными ресурсами напрямую предполагает работу программы в реальном режиме процессора, а не в защищённом. Работая в GNU/Linux нам невозможно получить доступ напрямую к любому участку памяти, а также работать с регистрами процессора типа sp, ip и т.д. без изменения кода ядра и его пересборки.

С другой стороны можно взять более старую ОС, которая не поддерживает многозадачность (равно как и защищённый режим работы процессора) и пофантазировать — что нам нужно сделать, чтобы там можно было получить иллюзию многозадачности. Например, DOS.

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

То есть она будет запускать другие программы, отдавать им или прерывать их исполнение, а между запусками хранить их состояние. Например, значения регистров процессора. Куда важнее, сохранить состояние регистра IP (instruction pointer) — регистра, который указывает на исполняемый в текущий момент код. И здесь важно, чтобы программа сохраняла его по условленному адресу в памяти при передаче управления. Тогда планировщик сможет использовать его для возврата управления.

Итого, нам нужно как минимум выделить некоторую память под список IP, соответствующих адресам текущих исполняемых команд в процессах. Кроме того — память компьютера доступна всем и сразу, так что нужно договориться, чтобы авторы программ писали в разных областях памяти, чтобы не залезать в чужую. Опять же нужно позаботиться о стеке процессов. В общем, масса проблем. Многие из них сейчас решаются аппаратными средствами, прочее же делает ОС.

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

Надеюсь, в общих чертах было ясно, какие действия необходимы и на сколько непросто написать даже такой примитивный планировщик?

Многозадачность и справедливость

Итак, представим, что у нас есть N процессов и 1 процессор. Нам нужно поделить время процессора между всеми процессами справедливым образом. То есть каждому по 1÷N. Однако, пусть мы и справедливы, и все процессы равны, но некоторые всё же “равнее” — есть процессы с низкой потребностью в отзывчивости и ресурсе CPU, есть же критичные — задержку работы которых пользователь сразу заметит. Поэтому процессы приоритезируются. Тогда наша формула принимает следующий вид: “Процент времени процесса = Приоритет ÷ Сумма приоритетов”.

Но это в идеальном мире. В реальности же процессы вольно или невольно стараются получить времени больше, или же отдают управление раньше (через тот же sched_yield), чем им выделено. Тем не менее, за условной “справедливостью” следить нужно.

При этом от времени процессора также “откусит” и сам планировщик — мы уже видели, что сама операция переключения рабочего процесса довольно затратна. Плюс ещё нужно рассчитать порядок выполнения — работа алгоритма расчёта также займёт какое-то время.

Есть 2 основных подхода к многозадачности: кооперативный и вытесняющий. В кооперативной многозадачности процессы сами решают, когда они готовы отдать управление. В вытесняющей многозадачности планировщик ведёт подсчёт времени
исполнения процессов (с помощью таймера) и сам прерывает рабочий процесс, когда тот выходит за выделенный лимит.

Кооперативная многозадачность

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

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

Среди примеров ОС, работающих по такому принципу — Windows 3.* Кто-нибудь слышал или даже знаком с этой веткой Windows?

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

Из очереди тредов берётся новый из начала, текущий помещается в конец. Текущий стек сохраняется в предварительно подготовленный map (словарь номер_треда — адрес_стека_треда ), из этого же map берётся адрес стека для нового треда, кладётся в регистр SP (stack pointer), запускается новый тред.

К слову, и в Linux можно попросить ОС забрать управление у треда досрочно с помощью вызова pthread_yield .

Все помнят, что такое очередь? Как работает FIFO?

Аналогично работает async-await в современных языках программирования высокого уровня таких как ECMA Script, Python3 и т.д. На команде await управление передаётся следующему исполняемому потоку. Внутри событийной петли (по сути — той же очереди) они кружат, выполняясь один за другим.

Вытесняющая многозадачность

Из плюсов — бó‎льшая привязка к реальности (планировщик следит за реальным временем исполнения процесса), а значит более прогнозируемая отзывчивость. Также выше стабильность — если какой-то процесс завис — он будет «выедать» только отведённое ему время.

Однако, если размер кусков, на которые мы нарезаем процессорное время мал, то из-за частых смен задач (смен контекста) можно получить потерю производительности.

За счёт прогнозируемости и отзывчивости данный подход распространился на почти все современные ОС.

Говоря о расходе времени при переключении контекста, как вы думаете, на чём же больше всего теряется время?

Смена контекста (context switch)

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

Кеш процессора

Современные компьютеры много сложнее, чем процессор-шина-память. В частности, для ускорения работы этой связки был добавлен ещё один вид памяти, который расположен ближе к процессору, чем RAM — кеш процессора. Размер кеша меньше, чем памяти. Однако, редко какая программа оперирует всей памятью сразу. Обычно необходимые для работы программы данные лежат вместе и их размер невелик.

Именно благодаря этому небольшая память кеша, но низкое время обращения процессора к ней, и даёт значительный прирост производительности на многих задачах. С другой стороны — при переключении контекстов в кеше может не хватать места под оперативные данные всех процессов — тогда кеш будет обновляться (также говорят “прогреваться”) из памяти по мере необходимости. И это может сильно замедлить работу компьютера по сравнению с работой при горячем кеше.

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

Для примера, если запустить эту же программу но на одном ядре (пусть и в 8 потоков) — смены контекста также будут происходить, но кеш будет “горячим” — программа выполнится быстрее. Для запуска на определённых процессорах программ (или миграции) используется утилита taskset (или программно sched_setaffinity ).

Посмотреть же статистическую информацию о смене контекстов за секунду можно всё также в vmstat . Столбик system, раздел “cs” (от “context switch”).

nice и приоритет исполнения процессов

Если же мы хотим настроить приоритет программы, воспользуемся утилитой nice (или программно с setpriority ). С помощью неё можно указать ОС, с каким приоритетом мы бы хотели запустить программу. Приоритеты в Linux определяются цифрами от -20 до 19. Чем меньше — тем приоритетнее. Для установки приоритета ниже 0 необходимы права супер-пользователя (например, можно установить через sudo ).

Есть ещё процесс idle (процесс для простоя процессора, или же программа запущенная с политикой SCHED_IDLE ), приоритет которого ниже 19 и migration_thread (для вытеснения процесса с ядра для миграции его на другой процессор) — у него выше -20.

Для примера, запустим параллельно с разными приоритетами несколько экземпляров предыдущей программы:

И посмотрим на результат выполнения:

Идут почти в порядке приоритетов.

Также есть renice для изменения приоритета процессу, группе процессов или процессам определённого пользователя.

Посмотреть же приоритет запущенных процессов можно через утилиту ps , указав, что нам хочется видеть и столбик nice (NI):

Кванты времени

Говоря о смене контекстов при переключении задач, стоит сказать и о том времени, которое непосредственно выделяется. Кванты или time slice — единицы планирования, тот ресурс, за который борются процессы.

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

Особо нас интересует kernel.sched_min_granularity_ns — это как раз размер кванта времени, выделяемого за раз. На пользовательских машинах и серверах значения могут сильно отличаться. К примеру, на моём ноутбуке это 3мс, а на сервере 10мс. Меньше отзывчивость, зато меньше смен контекста.

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

Настройки, увиденные вами характерны для текущего планировщика по умолчанию Linux — CFS — Completely Fair Scheduler (полностью честный планировщик). Однако, до него было ещё несколько планировщиков, а также есть альтернативные.

Планировщики в Linux

К примеру, всё началось с планировщика O(n) — все задачи расположены в списке, каждому исходя из приоритета присвоено определённое количество тиков (tick), которые соответствуют time slice-ам. Ищем задачу с максимальным значением, исполняем, понижаем счётчик тиков задачи. Если не можем найти задачи с положительным счётчиком — поднимаем счётчик всем задачам, исходя из приоритета.

Очевидная проблема данного планировщика — при росте количества задач растёт и время работы планировщика. Причём растёт линейно. В теории сложности вычислений этот алгоритм относится к классу O(n) — рост времени вычисления растёт пропорционально количеству входных данных.

Также данный планировщик имеет проблемы при работе с несколькими процессорами — одна блокировка на одну очередь — то есть одновременно с ней может работать только один процессор.

В 2002-ом году в Linux стали использовать более продвинутый планировщик — O(1). Как можно догадаться, алгоритм работы был изменён. Время работы планировщика более не зависело от числа запущенных процессов. Теперь у каждого процессора было по паре списков. В первом отсортированном списке — текущие процессы, ожидающие выполнения, во втором — исчерпавшие своё время. Как только первый список заканчивался — они менялись местами.

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

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

В ядре 2.6.23 появился новый планировщик CFS — Completely Fair Scheduler (полностью честный планировщик). Он уже оперирует не процессами, а сущностями планирования ( sched_entity ) — появилась возможность честнее разделять время между пользователями. Сам планировщик стал выделять время ближе к приоритетам.

Алгоритм стал несколько “дороже” — O(logN) — используется красно-чёрное дерево, что с ростом количества процессов заметно всё меньше и меньше. Планирование из одной структуры данных организовано довольно оптимально — для работы на многопроцессорных системах подходит также лучше. Именно он сейчас используется в Linux.

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

Так в Linux используется SCHED_DEADLINE с алгоритмом планирования по ближайшему сроку завершения (EDF — Earliest deadline first):

  • планировщик ведёт список процессов, отсортированный по сроку завершения (deadline);
  • в работу берётся готовый процесс, имеющий самый близкий deadline;
  • при появлении нового процесса — пересортировка.

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

Планировщик ввода-вывода

Помимо ресурса процессора также немаловажен ресурс ввода / вывода. С появлением и распространением SSD дела стали лучше, чем при HDD (аж 10мс для перехода к нужному участку носителя), но всё равно это сильно медленнее, чем работа с памятью. Да и в целом ресурсами лучше зря не разбрасываться.

При работе с дисковой подсистемой используется планировщик ввода / вывода. Причём для разных устройств и задач подходят разные планировщики. Так CFQ (Completely Fair Queue) и deadline планировщики сначала будут буферизировать запросы на чтение / запись, чтобы сгруппировать запросы к устройству так, чтобы эффективнее с него считать. Например, чтобы за один оборот диска можно было прочитать сектора для разных процессов.

С другой стороны, если используется сетевое хранилище, или виртуальное — лучше использовать noop — планировщик, который не будет ничего придумывать, а просто писать / читать как есть. Пусть сетевое хранилище или хостовая система думает об эффективности, а мы не будем на это тратить CPU.

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

Записав же туда нужный планировщик с помощью echo — изменить на нужный.

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

  1. Real time — получают первыми доступ к диску. Использование данного класса может помешать работе других программ. Имеет 8 приоритетов.
  2. Best effort (по умолчанию) — также имеет 8 приоритетов. Программы с одним приоритетом обслуживаются по очереди (round-robin).
  3. Idle — получает доступ к диску, если другим он не нужен.

Приоритеты от 0 до 7. Меньше — приоритетнее.

Не все планировщики используют приоритеты. К примеру, deadline стремится к тому, чтобы ожидание операции не превышало определённого времени. Noop не делает ничего — просто выполняет операции последовательно. С другой стороны, тот же CFQ использует приоритеты — с ним ionice будет работать.

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

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

Эта статья рассказывает о возможностях стандартного Планировщика Windows.
На примерах показано как запланировать запуск той или иной программы в определенное время. Рассказано о том, как правильно составить расписание запуска программы в определенные дни, в определенное время.

Планировщик будет незаменимым и удобным инструментом если необходимо запускать какие-то приложения, которые выполняют рутинные операции и не требуют присутствия пользователя. Это могут быть операции резервного копирования, обновления данных, дефрагментация и т.д.

На примере будет показано создание задания со сложным расписанием запуска. Статья содержит массу скриншотов с подробными описаниями.

Создание задачи

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

Чтобы убедиться, что сервис запущен, зажмите поочередно клавиши Win + R , и в открывшемся окошке «Выполнить», нужно набрать команду services.msc и нажать кнопку «ОК». Откроется окно, показанное на рисунке 1.

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

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

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

Для этого, опять поочередно зажмем клавиши Win + R , и введем команду taskschd.msc , после чего нажмем «ОК». Откроется окно, показанное на рисунке 2.

В правой панели данного окна нажмем на «Создать задачу. «. Откроется окно, показанное на рисунке 3.

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

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

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

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

Ежедневно

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

Еженедельно

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

Ежемесячно

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

Однократно

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

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

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

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

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

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

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

  • Запустить программу — будет выполнен указанный файл. Ограничений на формат файла нет, это может быть как исполняемый файл, так и какой-нибудь пакетный (bat, cmd и т. д.), или вообще любой другой.
  • Отправить сообщение электронной почты — в Windows 10 не получится создать задачу с таким действием.
  • Вывести сообщение — в Windows 10 не получится создать задачу с таким действием.

Выбрав действие «Запустить программу», и нажав Далее, увидим показанное на рисунке 10 окно.

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

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

Дополнительные настройки

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

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

  • Имя — Имя задания, под которым оно отображается в Планировщике задач.
  • Размещение — Расположение задачи в древовидной структуре планировщика задач. В данном случае «\» обозначает, что задача расположена в корне древа.
  • Автор — Имя пользователя, создавшего задачу.
  • Описание — Текстовое описание задачи.
  • При выполнении задачи использовать следующую учетную запись пользователя — Имя пользователя, под которым будет выполнятся задача.
  • Выполнять только для пользователей, вошедших в систему — Если установить данный чекбокс, то данная задача будет выполнятся только при наличии залогиненного пользователя.
  • Выполнять для всех пользователей — Данная задача будет выполнятся вне зависимости от наличия залогиненного пользователя.
  • Выполнять с наивысшими правами — Для выполнения задачи будет предоставлены права администратора.

Внешний вид следующей вкладки «Триггеры» показан на рисунке 13.

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

Здесь можно наблюдать следующие пункты настроек:

  • Начать задачу — Условие, при котором будет начинаться задача. Данная настройка уже рассматривалась в предыдущей главе.
  • Параметры — Тип расписания запуска. Все типы были рассмотрены в предыдущей главе, поэтому останавливаться на них не будем.
  • Отложить задачу на (произвольная задержка) — Позволяет включить задержку в выполнении задачи, без изменения её раписания запуска.
  • Повторять задачу каждые . в течении . — С помощью данных настроек можно настроить повторение задачи в течении заданного интервала времени. Например, можно запускать задание каждые 30 минут в течение 8-ми часов или до определенного времени. Очень удобная возможность для решения определенных задач мониторинга событий. К примеру, иногда требуется проверять наличие в определенной папке файла с периодом в пять минут в течение рабочего дня и если он там появился, то запустить скрипт, который выполнит над файлом определенные действия.
  • Остановить задачу через — Принудительно завершает запущенный Планировщиком задач процесс. Например, в поле Выполнять до указано время 18:00. Если задание очень большое и исполняется полчаса, то запуск его в 17:55 приведет к тому, что задание фактически будет работать до 18:25. Если такое положение дел нежелательно, то нужно поставить галку Остановить задание. В этом случае выполнение задания будет прекращено в 18:00 не смотря ни на что.
  • Срок действия — Интервал дат, во время которого задача будет активна.
  • Включено — Позволяет включить или выключить данный триггер.

Вкладка «Действия» показывает список задач, которые будут выполнятся при активации ранее расмотренных триггеров. Её внешний вид приведен на рисунке 15, расположенном ниже.

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

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

  • Запускать задачу при простое компьютера — Задача будет выполнятся только при «простое» компьютера, полезно для планирования запуска ресурсоемких задач, которые отнимают при своем выполнении все время процессора, загружая его на 100%.
  • Запускать только при питании для электросети — Если устройство, на котором настроена эта задача, перейдет к питанию от аккамуляторов (например это ноутбук, или сервер с подключенным ИБП), то при этой включенной опции, задача не будет выполнятся.
  • Пробуждать компьютер для выполнения задачи — При включении этой опции, Планировщик задач будет выводить компьютер из спящего режима для выполнения данной задачи.
  • Запускать только при подключении к следующей сети — При активации этого параметра, и выборе нужного сетевого подключения, задача будет выполнятся только при условии, что это подключение активно.

Вкладка «Параметры» показана на рисунке 17.

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

Примеры настройки Планировщика

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

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

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

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

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

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

Как видно на рисунке 19, в поле «Повторять каждые» установлено значение 2 дня. Это приведет к тому, что задача будет запущена раз в два дня. В это поле можно ввести любое значение.

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

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

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

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

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

Такое расписание запускает задачу каждый день начиная с 25-го июля и заканчивая 25-м августом, о чем говорят Дополнительные параметры, показанные на рисунке 21.

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

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

Этот пример демонстрирует настройку расписания запуска задачи Планировщиком в разные дни недели в разное время. При помощи расписания, представленного на рисунках 23 и 24 реализована следующая задача. Задание запускается в рабочие дни в 20:00, а в выходные — в 10:00. В созданном при использовании мастера создания задачи, были выставленны следующие значения, для запуска задачи по будням:

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

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

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

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

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

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

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

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

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

Тестовый запуск задачи

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

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

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

После этого, можно повторно запустить задачу, и уже по журналу смотреть, в чем же произошло.

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

Управление заданиями Планировщика задач по сети

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

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

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

SCHEDULER

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

Смотреть что такое SCHEDULER в других словарях:

SCHEDULER

Scheduler: übersetzungI Scheduler [dt. Zeitplaner], Betriebssysteme: Teil eines Betriebssystems; werden mehrere Programme gleichzeitig gestartet, . смотреть

SCHEDULER

сущ.1) общ. составитель графиков [расписаний\] (каких-л. действий) 2) комп. планировщик (компьютерная программа, имитирующая деловой ежедневник: с ее п. смотреть

SCHEDULER

1) планировщик; диспетчер. Программа (часть операционной системы), определяющая порядок предоставления некоторого общего ресурса, в первую очередь, центрального процессора, различным процессам. Планировщик нижнего уровня определяет, какой задаче или процессу из очереди готовых продоложать будет предоставлен процессор на ближайший период времени. Планировщик верхнего уровня определяет совокупность задач, выполняемых системой. 2) планировщик. Часть системы логического вывода, определяющая порядок применения знаний (фактов и правил). смотреть

SCHEDULER

[ʹʃedju:lə] n1. эк. плановик2. вчт. планировщик (программы; тж. task scheduler)

SCHEDULER

scheduler: translation scheduler UK US /ˈʃedjuːlər/ US /ˈskedʒuːlər/ noun [C] PRODUCTION, COMMERCE, TRANSPORT ► someone whose job is to create or . смотреть

SCHEDULER

<ʹʃedju:lə>n 1. эк. плановик 2. вчт. планировщик (программы; тж. task

SCHEDULER

1) ЭВМ оперативного управления (производством); ЭВМ-диспетчер 2) блок оперативного управления, модуль оперативного управления (производством), блок-распределитель (операций) 3) планировщик (программа) 4) программа-диспетчер (напр. в системе моделирования) • — AI scheduler- dynamic scheduler- FMS scheduler- generic scheduler- production scheduler. смотреть

SCHEDULER

1) ЭВМ оперативного управления (производством); ЭВМ-диспетчер 2) блок оперативного управления, модуль оперативного управления (производством), блок-распределитель (операций) 3) планировщик (программа) 4) программа-диспетчер (напр. в системе моделирования) • — AI scheduler — dynamic scheduler — FMS scheduler — generic scheduler — production scheduler. смотреть

SCHEDULER

m англ. вчт.планировщик (часть управляющей программы, распределяющая ресурсы системы)

SCHEDULER

• At first, Sonny and Cher having bizarre duel with one providing slots? (9) • Software product that coordinates calendars • Timetable honcho • Comput. смотреть

SCHEDULER

1 планувальник; диспетчер (програма, що визначає порядок надання загального ресурсу різним процесам) 2 планувальник (частина системи логічного висновку, що визначає порядок застосування знань). смотреть

SCHEDULER

фабрикатор (составитель программы прокатки по имеющемуся портфелю заказов)

SCHEDULER

scheduler [ʹʃedju:lə] n 1. эк. плановик 2. вчт. планировщик (программы; тж. task

SCHEDULER

• диспетчер • ответственный за планирование

SCHEDULER

m англ. вчт. программа планирования; планировщик Итальяно-русский словарь.2003.

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

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