Команда at linux at

Обновлено: 03.07.2024

Тогда как cron используется для назначения повторяющихся задач, команда at используется для назначения одноразового задания на заданное время, а команда batch — для назначения одноразовых задач, которые должны выполняться, когда загрузка системы становится меньше 0,8.

Чтобы использовать at или batch , необходимо, чтобы был установлен RPM-пакет at и запущена служба atd . Чтобы узнать, установлен ли этот пакет, выполните команду rpm -q at . Чтобы определить, работает ли служба, воспользуйтесь командой /sbin/service atd status .

Чтобы назначить выполнение разового задания в определённое время, введите команду 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- <version> /timespec .

После ввода команды at с аргументом, указывающим время, выводится приглашение at> . Введите команду, которая должна быть выполнена, а затем нажмите [Enter] и [Ctrl] - [D] . Вы можете указать несколько команд, нажимая клавишу [Enter] после ввода каждой команды. Когда вы наберёте все команды, нажмите [Enter] чтобы перейти на пустую строку, а затем нажмите [Ctrl] - [D] . Вы также можете ввести в этом приглашении сценарий оболочки, нажимая [Enter] в конце каждой строки сценария, и нажав [Ctrl] - [D] в пустой строке, чтобы выйти из программы. Если введён сценарий, для его исполнения используется оболочка, указанная в переменной окружения пользователя SHELL , оболочка пользователя для входа в систему или /bin/sh (в зависимости от того, какая будет найдена первой).

Чтобы просмотреть запланированные задания, выполните команду atq . За дополнительными сведениями обратитесь к разделу 35.2.3 Просмотр запланированных заданий .

Доступ к команде at можно ограничить. За дополнительной информацией об этом обратитесь к разделу 35.2.5 Управление доступом к at и batch .

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

После ввода команды batch появляется приглашение at> . Введите команду, которая должна быть выполнена, а затем нажмите [Enter] и [Ctrl] - [D] . Вы можете указать несколько команд, нажимая клавишу [Enter] после ввода каждой команды. Когда вы наберёте все команды, нажмите [Enter] чтобы перейти на пустую строку, а затем нажмите [Ctrl] - [D] . Вы также можете ввести в этом приглашении сценарий оболочки, нажимая [Enter] в конце каждой строки сценария, и нажав [Ctrl] - [D] в пустой строке, чтобы выйти из программы. Если введён сценарий, для его исполнения используется оболочка, указанная в переменной окружения пользователя SHELL , оболочка пользователя для входа в систему или /bin/sh (в зависимости от того, какая будет найдена первой). Заданный набор команд будет выполнен, как только средняя загрузка опустится ниже 0,8.

Чтобы просмотреть запланированные задания, выполните команду atq . За дополнительными сведениями обратитесь к разделу 35.2.3 Просмотр запланированных заданий .

Доступ к команде batch можно ограничить. За дополнительной информацией об этом обратитесь к разделу 35.2.5 Управление доступом к at и batch .

Чтобы просмотреть запланированные задания at и batch , используйте команду atq . Команда atq показывает список запланированных заданий, выводя каждое задание в отдельной строке. В конце строки указывается номер задания, дата, час, класс задания и имя пользователя. Пользователи могут просматривать только собственные задания. Если команду atq выполняет пользователь root, она выводит все задания всех пользователей.

В число дополнительных параметров командой строки at и batch входят:

Таблица 35-1. Параметры командной строки 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 не разрешается.

Чтобы запустить службу at , выполните команду /sbin/service atd start . Чтобы остановить её, выполните команду /sbin/service atd stop . Рекомендуется настроить запуск этой службы при загрузке системы. За подробными инструкциями по настройка автоматического запуска службы cron при загрузке системы обратитесь к главе 20 Управление доступом к службам .

Favorite

Добавить в избранное

Команда At в Linux

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

Установка at

В зависимости от дистрибутива at может присутствовать или не присутствовать в вашей системе Linux.

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

  • Установить at на Ubuntu и Debian
  • Установить at на CentOS и Fedora

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

Как использовать команду at

Упрощенный синтаксис команды at выглядит следующим образом:

Команда at берет дату и время ( runtime), когда вы хотите выполнить задание в качестве параметра командной строки, и команду, которая будет выполнена из стандартного ввода.

Давайте создадим задание, которое будет выполнено в 12:00 утра:

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

Введите одну или несколько команд, которые вы хотите выполнить:

Когда вы закончите ввод команд, нажмите Ctrl-D, чтобы выйти из командной строки и сохранить задание:

Команда отобразит номер задания, время выполнения и дату.

Есть и другие способы передачи команды, которую вы хотите выполнить, помимо ввода команды at в командной строке. Одним из способов является использование echo и передача команды для at:

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

Чтобы прочитать команды из файла вместо стандартного ввода, вызовите команду с опцией -f, следующей за путем к файлу. Например, чтобы создать задание, которое будет запускать скрипт /home/andreyex/script.sh:

Читать Использование команды SCP для безопасной передачи файлов в Linux

По умолчанию, если команда выдает результат, atотправит электронное письмо с выводом пользователю после завершения задания. Вызвать at -M с возможностью подавления уведомления по электронной почте:

Используйте -m для отправки электронной почты, даже если нет вывода:

Команда batch

batch или его псевдоним at -b, планирует задания и выполняет их в очереди пакетов, когда позволяет уровень загрузки системы. По умолчанию задания выполняются, когда средняя загрузка системы ниже 1,5. Значение загрузки может быть указано при вызове демона atd. Если средняя загрузка системы выше указанной, задания будут ждать в очереди.

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

Указание времени выполнения

Утилита at принимает широкий диапазон спецификаций времени. Вы можете указать время, дату и приращение от текущего времени:

Время, дата и приращение могут быть объединены, вот несколько примеров:

  • Запланируйте работу на предстоящее воскресенье на десять минут позже текущего времени:
  • Запланируйте работу на 14:00 через два дня:
  • Запланируйте работу на 12:30 25 октября 2020 года:
  • Запланируйте задание на выполнение через час:

Вы также можете указать время и дату [[CC]YY]MMDDhhmm[.ss] используя опцию -t. Вот пример:

Указание очереди

По умолчанию задания, созданные с помощью at, планируются в названной очереди, aа задания, созданные с помощью batch, планируются в очереди.

Запросы могут иметь имя от a до z и A до Z. Очереди со строчными буквами запускаются с меньшим количеством символов, что означает, что они имеют приоритет перед теми, которые имеют более высокие буквы.

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

Список ожидающих работ

Чтобы просмотреть список ожидающих заданий пользователя, введите команду atq или at -l:

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

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

Удаление отложенных заданий

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

Ограничение пользователей

Файлы /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.

В прошлой статье я рассказывал о программах cron и crontab , которые используются для планирования периодически повторяющихся действий в системе GNU/Linux.

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

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

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

  • at выполняет задачи в назначенное время.
  • atq выводит список ожидающих выполнения задач для каждого пользователя; в случае использования суперпользователем, выводятся все ожидающие выполнения задачи.
  • atrm удаляет задачи, заданные идентификаторами.
  • batch выполняет задачи во время периодов низкой загруженности системы; другими словами, когда средний уровень загрузки системы падает ниже значения 1.5 или того значения, которое задано при вызове atd .

Использование программы at

После запуска at предлагает вам ввести последовательность команд для выполнения. Чтобы закончить ввод команд, следует использовать комбинацию клавиш CTRL-D. Описание основных параметров командной строки at приведено ниже: Во время проведения тестов точное время было следующим: В том случае, если задать только время, задача будет запланирована на следующий момент достижения этого времени, например, я задал время 20.00, а исполнение задачи было запланировано на следующий день в это время: При этом, если задать время, которое еще не наступило сегодня, исполнение задачи будет запланировано на этот же день: А это еще один пример с использованием сочетания клавиш CTRL+D для завершения ввода команд:

Просмотр всех запланированных задач при помощи atq

Вы можете использовать программу atq в качестве альтернативы команде at -l для просмотра списка запланированных или выполняющихся в данный момент задач, а единственным аргументом этой программы является -q для указания определенной очереди.

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

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

Она выведет длинный список переменных окружения для выполнения команды и саму команду:

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

Удаление запланированной задачи при помощи atrm

Мы научились просматривать список запланированных задач и при желании их содержимое, теперь настало время рассмотреть способ их удаления из очереди при помощи программы atrm или команды at -d для удаления определенной задачи.

Таким образом, для удаления задачи с идентификатором 3, вам необходимо просто ввести команду:

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

Ограничение круга пользователей программы at

Файлы /etc/at.allow и /etc/at.deny устанавливают пользователей, которые могут планировать задачи для последующего исполнения при помощи программ at и batch . В качестве формата этих файлов используется простой список имен пользователей по одному в каждой строке. Использование пробелов в этих файлах не допускается.

Пользователь root может использовать программы at и batch при любых условиях.

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

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

Примеры использования

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

at <время> <дата>
at ЧЧ:ММ ММ/ДД/ГГ

Например, для исполнения команды в 12:15 после полудня в этот же день может использоваться следующая команда:

at 12:15 PM today

А для исполнения команды в 12:15 до полудня на следующий день — следующая:

at 12:15 tomorrow

Дата и время могут записываться в нескольких форматах: 02/01/09 или 02.01.09 и 4:00 pm или 16:00 соответственно.

После исполнения команды at с указанием времени и даты вы будете перемещены в простейшую интерактивную командную оболочку с приглашением at>. С помощью этой командной оболочки вы сможете ввести последовательность команд для исполнения, после чего вам нужно будет перейти на новую строку и воспользоваться сочетанием клавиш Ctrl+D для ее закрытия.

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

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

echo "i like linux-faq.ru" | at 12:15 tomorrow

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

А для планирования исполнения команды в 4 часа утра через 3 для — следующая команда:

at 4:00 am + 3 days

Ознакомление со списком команд, запланированных для исполнения

Для ознакомления со списком команд, запланированных для исполнения, может использоваться либо аргумент -l команды at, либо отдельная команда atq:

Удаление из очереди команд, запланированных для исполнения

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

Читайте также: