чем отличается планирование команд с помощью batch и at
Чем отличается планирование команд с помощью batch и at
Тогда как cron используется для назначения повторяющихся задач, команда at используется для назначения одноразового задания на заданное время, а команда batch — для назначения одноразовых задач, которые должны выполняться, когда загрузка системы становится меньше 0,8.
Параметр time может быть следующим:
формат ЧЧ:ММ — например, 04:00 обозначает четыре часа ночи. Если указанное время уже прошло, задание выполняется в это же время на следующий день.
midnight — обозначает полночь.
noon — обозначает полдень.
teatime — обозначает 4 часа дня (время чаепития).
формат «название-месяца день год» — например, строка «January 15 2002» обозначает 15 января 2002 года. Указывать год не обязательно.
Форматы ММДДГГ, ММ/ДД/ГГ или ММ.ДД.ГГ — например, 011502 также обозначает 15 января 2002 г.
now + время — время задаётся в минутах, часах, днях или неделях. Например, строка «now + 5 days» обозначает, что команда должна быть выполнена в это же время, но через пять дней.
Если заданные команды или сценарий выводит сообщения на стандартное устройство вывода, эти сообщения пересылаются пользователю по электронной почте.
Если заданные команды или сценарий выводит сообщения на стандартное устройство вывода, эти сообщения пересылаются пользователю по электронной почте.
В число дополнительных параметров командой строки at и batch входят:
Таблица 35-1. Параметры командной строки at и batch
Если файл at.allow существует, использовать at и batch разрешено только перечисленным в нём пользователям, а файл at.deny игнорируется.
Команда at в Linux
Установка at
В зависимости от дистрибутива at может присутствовать или отсутствовать в вашей системе Linux.
Если at не установлен, вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.
Как использовать команду at
Упрощенный синтаксис команды at выглядит следующим образом:
Команда at принимает дату и время ( runtime ), когда вы хотите выполнить задание, как параметр командной строки, и команду, которая должна быть выполнена из стандартного ввода.
Создадим задание, которое будет выполнено в 9:00:
Введите одну или несколько команд, которые хотите выполнить:
Когда вы закончите вводить команды, нажмите Ctrl-D чтобы выйти из подсказки и сохранить задание:
Команда отобразит номер задания, время и дату выполнения.
Другой вариант — использовать здесь документ :
batch команда
Чтобы создать batch задание, передайте команды, которые хотите выполнить:
Указание времени выполнения
Утилита at поддерживает широкий диапазон временных характеристик. Вы можете указать время, дату и приращение от текущего времени:
Время, дату и приращение можно комбинировать, вот несколько примеров:
Указание очереди
Запросы могут иметь имена от a до z и от A до Z Очереди с меньшими буквами работают с меньшей аккуратностью, что означает, что они имеют приоритет над очереди с более высокими буквами.
Список незавершенных вакансий
В выводе будут перечислены все задания, по одному в каждой строке. Каждая строка включает номер задания, дату, время, букву очереди и имя пользователя.
Когда atq вызывается от имени администратора, он перечисляет ожидающие задания всех пользователей.
Удаление незавершенных заданий
Ограничение пользователей
Выводы
Для получения дополнительной информации обо всех доступных параметрах команды at введите man at в вашем терминале.
Если у вас есть вопросы, не стесняйтесь оставлять комментарии.
Кунг-фу стиля Linux: запуск команд
Одна из особенностей Linux- и Unix-подобных операционных систем, возможность мощная, но, в то же время, вызывающая немало путаницы, заключается в том, что в этих системах до одной и той же цели можно добраться разными путями. Возьмём, например, что-то простое, вроде запуска последовательностей команд. Как это сделать? Пожалуй, самый очевидный ответ на этот вопрос заключается в написании shell-скрипта. Это — потрясающе гибкий подход к решению подобной задачи. Но что если нужно всего лишь запустить несколько команд, по возможности ничем не усложняя себе жизнь? Выглядит такая задача весьма простой, но существует множество способов решить её — от простого ввода этих команд в командной строке, до планирования их запуска. За выполняющимися командами, кроме того, можно наблюдать, организовав мониторинг очереди задач так, как он может быть организован на мейнфрейме.
Запуск команд из командной оболочки
Самый простой, хотя, возможно, не самый красивый способ запуска набора команд заключается в использовании обычной командной оболочки. Для этого команды достаточно разделить точкой с запятой:
Этот приём работает в большинстве командных оболочек, которые более или менее похожи на bash. Он хорошо подходит для запуска простого набора команд. Команды просто выполняются последовательно. Но что если надо запустить нечто вроде такой конструкции:
Не запускайте эту последовательность команд в реальной системе!
С использованием && можно строить и более длинные конструкции.
Более длинная конструкция, в которой используется && (тут тоже есть rm, поэтому будьте очень осторожны, пытаясь запустить нечто подобное в реальной системе)
В ситуациях, подобных вышеописанной, может найти применение ещё один оператор — || ( ИЛИ ). Он позволяет завершить работу после того, как хотя бы одна команда вернёт истинное значение, то есть — отработает успешно. Например:
Если нужно — операторы можно смешивать. Правда, если вам нужно выполнить несколько команд, выполнение которых занимает много времени, то, о чём мы только что говорили, нельзя назвать самым удачным способом запуска таких команд. В подобной ситуации стоит взглянуть на систему пакетного выполнения команд, основанную на очереди задач, речь о которой пойдёт ниже.
Планирование запуска команд в определённое время
В начале строки находится описание времени запуска команды — минуты, час, день месяца, день недели. Конструкция */5 указывает на то, что команду нужно запускать каждые 5 минут. Символы * являются универсальными местозаполнителями, представляющими любой час, день месяца и так далее. Есть множество особых конструкций, которыми можно пользоваться в подобных описаниях. Для того чтобы упростить их составление — можете попробовать этот crontab-редактор. Пример работы с ним показан ниже.
Работа с crontab-редактором
Иногда нужно выполнить некую команду в заданное время лишь один раз. Сделать это можно с помощью команды at :
В ответ на эту команду будет показано простое приглашение командной строки, с помощью которого можно вводить команды. В данном случае эти команды будут выполнены через 10 минут. Эта команда, конечно, поддерживает и указание абсолютных временных значений. Кроме того, программа вас поймёт, если вы вместо 4PM сообщите ей о «teatime» (серьёзно). Команда atq позволяет просмотреть список запланированных задач. А команда atrm позволяет отменять запуск запланированных команд. Это пригодится в том случае, если по какой-то причине в выполнении запланированной команды больше нет необходимости. Если воспользоваться пакетной формой команды ( batch ), система выполнит команды тогда, когда нагрузка на неё будет не слишком высокой.
Тут мне хотелось бы отметить то, что в большинстве систем все задачи, поставленные в очередь, будут выполняться в оболочке, заданной как оболочка, используемая по умолчанию (вроде /bin/sh ), и это необязательно будет bash. Может понадобиться использовать именно bash, или протестировать команды в оболочке, используемой по умолчанию. Если просто запустить скрипт, в котором, в качестве интерпретатора указан bash (например — #!/usr/bin/bash ), то это будет незаметно.
Пакетное выполнение задач
Итоги
Как вы обычно запускаете наборы команд в Linux?
Команда At в Linux
В этой статье мы расскажем, как использовать at и его компаньоны утилиты batch, atq, atrm, которые позволяют просматривать, удалять и создавать новые рабочие места, которые должны выполняться в более позднее время.
Установка at
В зависимости от дистрибутива at может присутствовать или не присутствовать в вашей системе Linux.
Если at не установлена, вы можете легко установить его, используя менеджер пакетов вашего дистрибутива.
После установки программы atd, убедитесь что демон планирования запущен и настроен на запуск при загрузке:
Как использовать команду at
Упрощенный синтаксис команды at выглядит следующим образом:
Команда at берет дату и время ( runtime), когда вы хотите выполнить задание в качестве параметра командной строки, и команду, которая будет выполнена из стандартного ввода.
Давайте создадим задание, которое будет выполнено в 12:00 утра:
После того, как вы нажмете Enter, вы увидите командную строку at, которая чаще всего начинается с at>. Вы также видите предупреждение о том, что оболочка, в которой будет выполняться команда:
Введите одну или несколько команд, которые вы хотите выполнить:
Когда вы закончите ввод команд, нажмите Ctrl-D, чтобы выйти из командной строки и сохранить задание:
Команда отобразит номер задания, время выполнения и дату.
Есть и другие способы передачи команды, которую вы хотите выполнить, помимо ввода команды at в командной строке. Одним из способов является использование echo и передача команды для at:
Другой вариант заключается в использовании здесь документа:
Команда batch
Чтобы создать задание batch, передайте команды, которые вы хотите выполнить:
Указание времени выполнения
Утилита at принимает широкий диапазон спецификаций времени. Вы можете указать время, дату и приращение от текущего времени:
Время, дата и приращение могут быть объединены, вот несколько примеров:
Указание очереди
По умолчанию задания, созданные с помощью at, планируются в названной очереди, aа задания, созданные с помощью batch, планируются в очереди.
Запросы могут иметь имя от a до z и A до Z. Очереди со строчными буквами запускаются с меньшим количеством символов, что означает, что они имеют приоритет перед теми, которые имеют более высокие буквы.
Список ожидающих работ
В выводе будут перечислены все задания, по одному на строку. Каждая строка содержит номер задания, дату, время, букву очереди и имя пользователя.
Когда atq вызывается как администратор, он перечисляет ожидающие работы всех пользователей.
Удаление отложенных заданий
Ограничение пользователей
Файлы /etc/at.deny и /etc/at.allow позволяют вам контролировать, какие пользователи могут создавать новые рабочие места с командой at или batch. Файлы состоят из списка имен пользователей, по одному имени пользователя в строке.
По умолчанию существует только файл /etc/at.deny и является пустым, что означает, что все пользователи могут использовать команду at. Если вы хотите отказать в разрешении определенному пользователю, добавьте имя пользователя в этот файл.
Если файл /etc/at.allow существует, только пользователи, перечисленные в этом файле, могут использовать команду at.
Если ни один из файлов не существует, только команда с правами администратора может использовать команду at.
Вывод
Утилита at считывает команду из стандартного ввода и выполняет их в более позднее время. В отличие от crontab, задания, созданные с помощью at, выполняются только один раз.
Для получения дополнительной информации обо всех доступных опциях типа команды at man at в вашем терминале.
Если у вас есть какие-либо вопросы, не стесняйтесь оставлять комментарии.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
35.2. Задания at и batch
Тогда как cron используется для назначения повторяющихся задач, команда at используется для назначения одноразового задания на заданное время, а команда batch — для назначения одноразовых задач, которые должны выполняться, когда загрузка системы становится меньше 0,8.
35.2.1. Настройка заданий at
Чтобы назначить выполнение разового задания в определённое время, введите команду at time, где time — время выполнения команды.
Параметр time может быть следующим:
формат ЧЧ:ММ — например, 04:00 обозначает четыре часа ночи. Если указанное время уже прошло, задание выполняется в это же время на следующий день.
midnight — обозначает полночь.
noon — обозначает полдень.
teatime — обозначает 4 часа дня (время чаепития).
формат «название-месяца день год» — например, строка «January 15 2002» обозначает 15 января 2002 года. Указывать год не обязательно.
Форматы ММДДГГ, ММ/ДД/ГГ или ММ.ДД.ГГ — например, 011502 также обозначает 15 января 2002 г.
now + время — время задаётся в минутах, часах, днях или неделях. Например, строка «now + 5 days» обозначает, что команда должна быть выполнена в это же время, но через пять дней.
Сначала должно буть указано время, а за ним можно указать необязательную дату. За дополнительной информацией о формате времени, обратитесь к текстовому файлу /usr/share/doc/at- /timespec.
Если заданные команды или сценарий выводит сообщения на стандартное устройство вывода, эти сообщения пересылаются пользователю по электронной почте.
Чтобы просмотреть запланированные задания, выполните команду atq. За дополнительными сведениями обратитесь к разделу 35.2.3 Просмотр запланированных заданий.
Доступ к команде at можно ограничить. За дополнительной информацией об этом обратитесь к разделу 35.2.5 Управление доступом к at и batch.
35.2.2. Настройка заданий batch
Для выполнения разовой задачи, когда средняя загрузка опускается ниже 0,8, используйте команду batch.
Если заданные команды или сценарий выводит сообщения на стандартное устройство вывода, эти сообщения пересылаются пользователю по электронной почте.
Чтобы просмотреть запланированные задания, выполните команду atq. За дополнительными сведениями обратитесь к разделу 35.2.3 Просмотр запланированных заданий.
Доступ к команде batch можно ограничить. За дополнительной информацией об этом обратитесь к разделу 35.2.5 Управление доступом к at и batch.
35.2.3. Просмотр запланированных заданий
Чтобы просмотреть запланированные задания at и batch, используйте команду atq. Команда atq показывает список запланированных заданий, выводя каждое задание в отдельной строке. В конце строки указывается номер задания, дата, час, класс задания и имя пользователя. Пользователи могут просматривать только собственные задания. Если команду atq выполняет пользователь root, она выводит все задания всех пользователей.
35.2.4. Дополнительные параметры командной строки
В число дополнительных параметров командой строки at и batch входят:
Параметр | Описание |
---|---|
-f | Команды и сценарий оболочки не вводятся в приглашении, а считываются из файла. |
-m | При завершении задания пользователю отправляется почтовое сообщение. |
-v | Выводит время, на которое запланировано задание. |
Таблица 35-1. Параметры командной строки at и batch
35.2.5. Управление доступом к at и batch
Файлы /etc/at.allow и /etc/at.deny позволяют ограничить доступ к командам at и batch. Формат списков управления доступом в обоих файлах прост — в каждой строке файла указывается одно имя пользователя. Пробельные символы в этих файлах не допускаются. Перезапускать демон at (atd) после изменения файлов управления доступом не требуется. Файлы управления доступом обрабатываются каждый раз, когда пользователь пытается выполнить команды at и batch.
Пользователь root всегда может выполнять команды at and batch, вне зависимости от файлов управления доступом.
Если файл at.allow существует, использовать at и batch разрешено только перечисленным в нём пользователям, а файл at.deny игнорируется.
Если файл at.allow не существует, пользователям, перечисленным в at.deny, использовать at и batch не разрешается.
35.2.6. Запуск и остановка службы
Чтобы запустить службу at, выполните команду /sbin/service atd start. Чтобы остановить её, выполните команду /sbin/service atd stop. Рекомендуется настроить запуск этой службы при загрузке системы. За подробными инструкциями по настройка автоматического запуска службы cron при загрузке системы обратитесь к главе 20 Управление доступом к службам.