at — это утилита командной строки, которая позволяет вам планировать выполнение команд в определенное время. Задания, созданные с помощью at , выполняются только один раз.
В этой статье мы расскажем , как использовать at и его компаньоны утилитами batch , atq , atrm просматривать, удалять и создавать новые рабочие места , которые должны выполняться в более позднее время.
Установка at
В зависимости от дистрибутива at может присутствовать или отсутствовать в вашей системе Linux.
Если at не установлен, вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.
sudo apt update sudo apt install at
sudo yum install at
После установки программы убедитесь, что atd , демон планирования запущен и настроен на запуск при загрузке:
sudo systemctl enable —now atd
Как использовать команду at
Упрощенный синтаксис команды at выглядит следующим образом:
at [OPTION. ] runtime
Команда at принимает дату и время ( runtime ), когда вы хотите выполнить задание, как параметр командной строки, и команду, которая должна быть выполнена из стандартного ввода.
Автоматическое выключение компьютера в определенное время?
Создадим задание, которое будет выполнено в 9:00:
at 09:00
Как только вы нажмете Enter , вам будет представлена командная строка at которая чаще всего начинается с at> . Вы также увидите предупреждение о том, в какой оболочке будет выполняться команда:
warning: commands will be executed using /bin/sh at>
Введите одну или несколько команд, которые хотите выполнить:
tar -xf /home/linuxize/file.tar.gz
Когда вы закончите вводить команды, нажмите Ctrl-D чтобы выйти из подсказки и сохранить задание:
at> job 4 at Tue May 5 09:00:00 2020
Команда отобразит номер задания, время и дату выполнения.
Есть и другие способы , чтобы пройти команду , которую вы хотите запустить, помимо ввода команды в at строке. Один из способов — использовать echo и направить команду по at :
echo «command_to_be_run» | at 09:00
Другой вариант — использовать здесь документ :
at 09:00 command_to_be_runEND
Чтобы читать команды из файла вместо стандартного ввода, вызовите команду с параметром -f путь к файлу. Например, чтобы создать задание, которое будет запускать скрипт /home/linuxize/script.sh :
at 09:00 -f /home/linuxize/script.sh
По умолчанию, если команда производит вывод, at отправит электронное письмо с выводом пользователю после завершения задания. Invoke at с -M опцией для подавления уведомлений по электронной почте:
at 09:00 -M
Используйте -m чтобы отправить электронное письмо, даже если нет вывода:
at 09:00 -m
batch команда
batch или его псевдоним at -b планирует задания и выполняет их в пакетной очереди, если позволяет уровень загрузки системы. По умолчанию задания выполняются, когда средняя загрузка системы ниже 1,5. Значение нагрузки можно указать при вызове демона atd . Если средняя загрузка системы выше указанной, задания будут ждать в очереди.
Чтобы создать batch задание, передайте команды, которые хотите выполнить:
Планировщик заданий Windows — создание простого задания
echo «command_to_be_run» | batch
Указание времени выполнения
Утилита at поддерживает широкий диапазон временных характеристик. Вы можете указать время, дату и приращение от текущего времени:
- Время — чтобы указать время, используйте форму HH:MM или HHMM . Чтобы указать 12-часовой формат времени, используйте am или pm после времени. Вы также можете использовать такие строки, как now , midnight , noon или teatime (16:00). По истечении указанного времени задание будет выполнено на следующий день.
- Дата — команда позволяет запланировать выполнение задания на заданную дату. Дату можно указать, используя название месяца, за которым следует день и (необязательно) год. Вы можете использовать строки, например, today , tomorrow или будний день. Дата также может быть указана в MMDD[CC]YY , MM/DD/[CC]YY , DD.MM.[CC]YY или [CC]YY-MM-DD .
- Increment — at также принимает приращения в формате now + count time-unit , где count — это число, а time-unit может быть одной из следующих строк: minutes , hours , days или weeks .
Время, дату и приращение можно комбинировать, вот несколько примеров:
-
Запланируйте работу на ближайшее воскресенье на время на десять минут позже текущего:
at sunday +10 minutes
at 1pm + 2 days
at 12:30 102120
at now +1 hours
Вы также можете указать время и дату в [[CC]YY]MMDDhhmm[.ss] используя параметр -t . Вот пример:
at -t 202005111321.32
Указание очереди
По умолчанию задания, созданные с помощью at , планируются в очереди с именем a а задания, созданные с помощью batch , планируются в очереди b .
Запросы могут иметь имена от a до z и от A до Z Очереди с меньшими буквами работают с меньшей аккуратностью, что означает, что они имеют приоритет над очереди с более высокими буквами.
Вы можете указать очередь с помощью опции -q . Например, чтобы установить задание в L очередь, вы должны запустить:
at monday +2 hours -q L
Список незавершенных вакансий
Чтобы вывести список ожидающих заданий пользователя, выполните atq или at -l :
В выводе будут перечислены все задания, по одному в каждой строке. Каждая строка включает номер задания, дату, время, букву очереди и имя пользователя.
9 Tue May 5 12:22:00 2020 a linuxize 12 Wed Oct 21 12:30:00 2020 a linuxize 15 Tue May 5 09:00:00 2020 a linuxize 6 Tue May 5 09:00:00 2020 a linuxize 13 Mon May 4 23:08:00 2020 a linuxize 11 Wed Jul 1 10:00:00 2020 a linuxize 4 Tue May 5 09:00:00 2020 a linuxize
Когда atq вызывается от имени администратора, он перечисляет ожидающие задания всех пользователей.
Удаление незавершенных заданий
Чтобы удалить отложенное задание, atrm команду atrm или at -r после которой atrm номер задания. Например, чтобы удалить задание с номером девять, вы должны запустить:
atrm 9
Ограничение пользователей
/etc/at.deny и /etc/at.allow позволяют контролировать, какие пользователи могут создавать задания с помощью команды at или batch . Файлы состоят из списка имен пользователей, по одному имени пользователя в строке.
По умолчанию существует только файл /etc/at.deny и он пуст, что означает, что все пользователи могут использовать команду at . Если вы хотите отказать в разрешении определенному пользователю, добавьте имя пользователя в этот файл.
Если файл /etc/at.allow существует, только пользователи, перечисленные в этом файле, могут использовать команду at .
Если ни один из файлов не существует, только пользователи с правами администратора могут использовать команду at .
Выводы
Утилита at считывает команды со стандартного ввода и выполняет их позже. В отличие от crontab , задания, созданные с помощью at , выполняются только один раз.
Для получения дополнительной информации обо всех доступных параметрах команды at введите man at в вашем терминале.
Если у вас есть вопросы, не стесняйтесь оставлять комментарии.
Источник: routerus.com
Пример триггера времени (создание скриптов)
В этом примере скриптов показано, как создать задачу, которая запускает Блокнот в определенное время. Задача содержит триггер на основе времени, указывающий начальную границу для активации задачи, исполняемое действие, запускающее Блокнот, и конечную границу, которая деактивирует задачу.
В следующей процедуре описывается планирование задачи для запуска исполняемого файла в определенное время.
Планирование запуска в Блокноте в определенное время
- Создайте объект TaskService . Этот объект позволяет создать задачу в указанной папке.
- Получите папку задач и создайте задачу. Используйте метод TaskService.GetFolder , чтобы получить папку, в которой хранится задача, и метод TaskService.NewTask для создания объекта TaskDefinition , представляющего задачу.
- Определите сведения о задаче с помощью объекта TaskDefinition . Используйте свойство TaskDefinition.Settings , чтобы определить параметры, определяющие, как служба планировщика задач выполняет задачу, и свойство TaskDefinition.RegistrationInfo для определения сведений, описывающих задачу.
- Создайте триггер на основе времени с помощью свойства TaskDefinition.Triggers . Это свойство предоставляет доступ к объекту TriggerCollection . Используйте метод TriggerCollection.Create (указывающий тип триггера, который вы хотите создать) для создания триггера на основе времени. При создании триггера установите начальную и конечную границы триггера, чтобы активировать и деактивировать триггер. Начальная граница указывает, когда будет выполнено действие задачи.
- Создайте действие для выполнения задачи с помощью свойства TaskDefinition.Actions . Это свойство предоставляет доступ к объекту ActionCollection . Используйте метод ActionCollection.Create , чтобы указать тип создаваемого действия. В этом примере используется объект ExecAction , представляющий действие, которое выполняет операцию командной строки.
- Зарегистрируйте задачу с помощью метода TaskFolder.RegisterTaskDefinition . В этом примере задача будет запускаться в Блокнот в текущее время плюс 30 секунд.
В следующем примере VBScript показано, как запланировать выполнение задачи в Блокноте через 30 секунд после регистрации задачи.
‘—————————————————————— ‘ This sample schedules a task to start notepad.exe 30 seconds ‘ from the time the task is registered. ‘—————————————————————— ‘ A constant that specifies a time-based trigger. const TriggerTypeTime = 1 ‘ A constant that specifies an executable action. const ActionTypeExec = 0 ‘******************************************************** ‘ Create the TaskService object. Set service = CreateObject(«Schedule.Service») call service.Connect() ‘******************************************************** ‘ Get a folder to create a task definition in.
Dim rootFolder Set rootFolder = service.GetFolder(«») ‘ The taskDefinition variable is the TaskDefinition object. Dim taskDefinition ‘ The flags parameter is 0 because it is not supported. Set taskDefinition = service.NewTask(0) ‘******************************************************** ‘ Define information about the task. ‘ Set the registration info for the task by ‘ creating the RegistrationInfo object.
Dim regInfo Set regInfo = taskDefinition.RegistrationInfo regInfo.Description = «Start notepad at a certain time» regInfo.Author = «Author Name» ‘******************************************************** ‘ Set the principal for the task Dim principal Set principal = taskDefinition.Principal ‘ Set the logon type to interactive logon principal.LogonType = 3 ‘ Set the task setting info for the Task Scheduler by ‘ creating a TaskSettings object. Dim settings Set settings = taskDefinition.Settings settings.Enabled = True settings.StartWhenAvailable = True settings.Hidden = False ‘******************************************************** ‘ Create a time-based trigger.
Dim triggers Set triggers = taskDefinition.Triggers Dim trigger Set trigger = triggers.Create(TriggerTypeTime) ‘ Trigger variables that define when the trigger is active. Dim startTime, endTime Dim time time = DateAdd(«s», 30, Now) ‘start time = 30 seconds from now startTime = XmlTime(time) time = DateAdd(«n», 5, Now) ‘end time = 5 minutes from now endTime = XmlTime(time) WScript.Echo «startTime :» endTime :» PT5M» ‘Five minutes trigger.Id = «TimeTriggerId» trigger.Enabled = True ‘*********************************************************** ‘ Create the action for the task to execute. ‘ Add an action to the task to run notepad.exe. Dim Action Set Action = taskDefinition.Actions.Create( ActionTypeExec ) Action.Path = «C:WindowsSystem32notepad.exe» WScript.Echo «Task definition created. About to submit the task. » ‘*********************************************************** ‘ Register (create) the task. call rootFolder.RegisterTaskDefinition( _ «Test TimeTrigger», taskDefinition, 6, , , 3) WScript.Echo «Task submitted.» ‘—————————————————————— ‘ Used to get the time for the trigger ‘ startBoundary and endBoundary. ‘ Return the time in the correct format: ‘ YYYY-MM-DDTHH:MM:SS. ‘—————————————————————— Function XmlTime(t) Dim cSecond, cMinute, CHour, cDay, cMonth, cYear Dim tTime, tDate cSecond = «0» 0″ 0″ 0″ 0″ «:» _ «:» «-» «-» «T» https://learn.microsoft.com/ru-ru/windows/win32/taskschd/time-trigger-example—scripting-» target=»_blank»]learn.microsoft.com[/mask_link]
Как создавать запланированные задачи с помощью командной строки в Windows 10
Windows 10 поставляется с Task Scheduler, который является продвинутым инструментом, который позволяет автоматически создавать и запускать подпрограммы. Используя этот инструмент, вы можете автоматизировать задачи для выполнения всевозможных задач, включая запуск приложения, выполнение определенной команды или выполнение сценария в определенный день и время или когда определенное условие выполняется с помощью триггеров.
Хотя имеется графический интерфейс для использования планировщика задач , вы также можете использовать командную строку для создания, редактирования и удаления задач, которые могут пригодиться во многих ситуациях. Например, когда вам нужно ускорить процесс для создания одной и той же задачи на нескольких компьютерах, а также при создании приложения или сценария, который должен соединяться с инструментом, — это лишь некоторые из них.
В этом руководстве по Windows 10 мы расскажем о шагах, чтобы начать управлять запланированными задачами с помощью инструмента schtasks.exe в командной строке.
- Как создать запланированное задание с помощью командной строки
- Как изменить запланированное задание с помощью командной строки
- Как удалить запланированное задание с помощью командной строки
Как создать запланированное задание с помощью командной строки
Чтобы создать запланированное задание с помощью командной строки в Windows 10 , выполните следующие действия.
- Откройте Пуск .
- Найдите командную строку , щелкните правой кнопкой мыши верхний результат и выберите параметр « Запуск от имени администратора» .
- Введите следующую команду, чтобы создать ежедневную задачу для запуска приложения в 11:00 и нажмите Enter : Синтаксис SCHTASKS /CREATE /SC DAILY /TN «FOLDERPATHTASKNAME» /TR «C:SOURCEFOLDERAPP-OR-SCRIPT» /ST HH:MM пример SCHTASKS /CREATE /SC DAILY /TN «MyTasksNotepad task» /TR «C:WindowsSystem32notepad.exe» /ST 11:00
Совет. Путь к папке до имени задачи в параметре / TN не является обязательным, но он поможет вам отделить ваши задачи. Если вы не укажете путь, задача будет создана в папке библиотеки планировщика заданий .
- Введите следующую команду, чтобы создать еженедельную задачу для запуска приложения в 11:00 и нажмите Enter : Синтаксис SCHTASKS /CREATE /SC WEEKLY /D SUN /TN «FOLDERPATHTASKNAME» /TR «C:SOURCEFOLDERAPP-OR-SCRIPT» /ST HH:MM пример SCHTASKS /CREATE /SC WEEKLY /D SUN /TN «MyTasksNotepad task» /TR «C:WindowsSystem32notepad.exe» /ST 11:00
- Введите следующую команду, чтобы создать ежемесячную задачу для запуска приложения в 11:00 и нажмите Enter : Синтаксис SCHTASKS /CREATE /SC MONTHLY /D 15 /TN «FOLDERPATHTASKNAME» /TR «C:SOURCEFOLDERAPP-OR-SCRIPT» /ST HH:MM пример SCHTASKS /CREATE /SC MONTHLY /D 15 /TN «MyTasksNotepad task» /TR «C:WindowsSystem32notepad.exe» /ST 11:00
- Введите следующую команду, чтобы создать запланированное задание, которое ежедневно выполняется от имени определенного пользователя, и нажмите клавишу ВВОД : Синтаксис SCHTASKS /CREATE /SC DAILY /TN «FOLDERPATHTASKNAME» /TR «C:SOURCEFOLDERAPP-OR-SCRIPT» /ST HH:MM /RU USER-ACCOUNT пример SCHTASKS /CREATE /SC DAILY /TN «MyTasksNotepad task» /TR «C:WindowsSystem32notepad.exe» /ST 11:00 /RU admin
После того, как вы выполните шаги, задача будет выполняться в указанные вами интервалы.
Планировщик заданий создает параметры
Версия планировщика заданий поставляется с множеством параметров, позволяющих настраивать многие аспекты задания, и в этом руководстве мы используем следующие параметры для изменения запланированного задания:
- / CREATE — указывает, что вы хотите создать новую автоматизированную процедуру.
- / SC — определяет расписание для задачи. Доступные варианты включают МИНУТУ, ЧАСЫ, ЕЖЕДНЕВНО, ЕЖЕНЕДЕЛЬНО, ЕЖЕМЕСЯЧНО, ОДИН РАЗ, НАЧАЛО, ОНЛОГОН, ОДИН РАЗ и ОДНАКО.
- / D — указывает день недели для выполнения задачи. Доступные параметры: Пн, Вт, Ср, Чт, Пт, Сб и Вс. Если вы используете опцию ЕЖЕМЕСЯЧНО, то вы можете использовать 1 — 31 для дней месяца. Кроме того, есть подстановочный знак «*», который указывает все дни.
- / TN — указывает имя и местоположение задачи. «Задача MyTasks Notepad» использует в качестве имени задачу «Блокнот» и сохраняет задачу в папке «MyTasks». Если папка недоступна, она будет создана автоматически.
- / TR — указывает местоположение и имя задачи, которую вы хотите запустить. Вы можете выбрать приложение или пользовательский скрипт .
- / ST — определяет время выполнения задачи (в 24-часовом формате).
- / QUERY — отображает все системные задачи.
- / RU — задает задачу для запуска под определенной учетной записью пользователя.
Это лишь некоторые из доступных вариантов. Вы можете узнать больше о возможностях создания запланированного задания с помощью команды SCHTASKS /CREATE /? команда.
Как изменить запланированное задание с помощью командной строки
Чтобы изменить запланированное задание в Windows 10 с помощью командной строки, выполните следующие действия.
- Откройте Пуск .
- Найдите командную строку , щелкните правой кнопкой мыши верхний результат и выберите параметр « Запуск от имени администратора» .
- Введите следующую команду, чтобы изменить время запуска задачи в 9:00 и нажмите Enter : Синтаксис SCHTASKS /CHANGE /TN «FOLDERPATHTASKNAME» /ST HH:MM пример SCHTASKS /CHANGE /TN «MyTasksNotepad task» /ST 09:00
- Введите следующую команду, чтобы изменить информацию о пользователе задачи, и нажмите Enter : Синтаксис SCHTASKS /CHANGE /TN «FOLDERPATHTASKNAME» /RU NEW-USERNAME пример SCHTASKS /CHANGE /TN «MyTasksNotepad task» /RU admin2
- Введите следующую команду, чтобы отключить запланированное задание, и нажмите Enter : Синтаксис SCHTASKS /CHANGE /TN «FOLDERPATHTASKNAME» /DISABLE пример SCHTASKS /CHANGE /TN «MyTasksNotepad task» /DISABLE
Подсказка: если вы хотите снова включить задачу, вы можете использовать ту же команду, но не забудьте использовать параметр /ENABLE .
После выполнения шагов задание будет изменено на указанную вами информацию.
Параметры изменения планировщика заданий
В этом руководстве мы используем следующие параметры для создания запланированного задания:
- / CHANGE — указывает, что вы хотите редактировать существующую задачу.
- / TN — указывает имя и местоположение задачи, которую вы хотите изменить.
- / ST — определяет новое время для запуска автоматизированной процедуры.
- / DISABLE — отключает задачу.
Это лишь некоторые из доступных вариантов. Вы можете узнать больше о возможностях изменить запланированное задание, используя SCHTASKS /CHANGE /? команда.
Как удалить запланированное задание с помощью командной строки
Если вам больше не нужна конкретная задача, вы можете удалить ее, выполнив следующие действия:
- Откройте Пуск .
- Найдите командную строку , щелкните правой кнопкой мыши верхний результат и выберите параметр « Запуск от имени администратора» .
- Введите следующую команду, чтобы удалить запланированное задание, и нажмите Enter : Синтаксис SchTask /DELETE /TX «FOLDERPATHTASKNAME» пример SCHTASKS /DELETE /TN «MyTasksNotepad task»
- Нажмите клавишу Y для подтверждения.
После выполнения этих действий задача будет удалена и больше не будет доступна на вашем устройстве.
Параметры удаления планировщика заданий
В этом руководстве мы используем следующие параметры для удаления запланированного задания:
- / DELETE — указывает, что вы хотите удалить существующую задачу.
- / TN — указывает имя и местоположение задачи, которую вы хотите удалить.