At command linux output
Служба atd предназначена для выполнения команд в заданное время. В отличие от службы crond, служба atd выполняет каждую команду лишь раз и не предназначена для выполнения команд через заданные промежутки времени.
Команда at предназначена для управления службой atd, которая установлена по умолчанию в большинстве дистрибутивов Linux.
Примеры использования
Для планирования исполнения команд следует осуществлять вызов команды at со следующими аргументами:
Например, для исполнения команды в 12:15 после полудня в этот же день может использоваться следующая команда:
А для исполнения команды в 12:15 до полудня на следующий день — следующая:
Дата и время могут записываться в нескольких форматах: 02/01/09 или 02.01.09 и 4:00 pm или 16:00 соответственно.
После исполнения команды at с указанием времени и даты вы будете перемещены в простейшую интерактивную командную оболочку с приглашением at>. С помощью этой командной оболочки вы сможете ввести последовательность команд для исполнения, после чего вам нужно будет перейти на новую строку и воспользоваться сочетанием клавиш Ctrl+D для ее закрытия.
$ at 12:15
at> echo «i like linux-faq.ru»
at> ctrl-d
at>
job 17 at Fri Nov 25 12:15:00 2016
В том случае, если вы явно не укажите дату, но укажите время, которое в текущий день уже прошло, at будет предполагать, что вы хотите запланировать исполнение заданной последовательности команд в заданное время на следующий день.
Приведенная выше команда может быть запланирована для исполнения в то же время и с помощью следующей команды без необходимости работы с интерактивной командной оболочкой:
echo «i like linux-faq.ru» | at 12:15 tomorrow
Кроме того, вы можете использовать ключевые слова и числа. Например, для планирования исполнения команды в текущее время через неделю может использоваться следующая команда:
А для планирования исполнения команды в 4 часа утра через 3 для — следующая команда:
Ознакомление со списком команд, запланированных для исполнения
Для ознакомления со списком команд, запланированных для исполнения, может использоваться либо аргумент -l команды at, либо отдельная команда atq:
Удаление из очереди команд, запланированных для исполнения
Для удаления команд, запланированных для исполнения, из очереди следует использовать либо аргумент -d команды at, либо отдельная команда atrm:
Планирование задач при помощи программы at в Linux
В прошлой статье я рассказывал о программах cron и crontab , которые используются для планирования периодически повторяющихся действий в системе GNU/Linux.
Но в некоторых случаях вам может потребоваться однократно выполнить задачу в заданное время, как раз для этой цели лучше всего подходит программа at , которая также позволяет выполнять команды во время снижения загрузки системы.
Еще одной причиной использования at может быть ваше желание выполнить команду, занимающую много времени, и отключиться от сервера; программа at подойдет и для этой задачи, но я бы также порекомендовал ознакомиться со статьями о запуске команд в фоновом режиме и использовании утилиты screen .
Таким образом, главной задачей программы at является «планирование однократного исполнения задачи». В этом плане она похожа на программу cron , которая обычно используется для планирования периодически повторяющихся задач; давайте рассмотрим основные примеры использования этой программы.
Использование программы at
Просмотр всех запланированных задач при помощи atq
На мой взгляд, вывод программы не особенно полезен, так как вы не можете посмотреть, какая команда выполняется в рамках задачи с идентификатором 3 или любой другой задачи.
Она выведет длинный список переменных окружения для выполнения команды и саму команду:
Этот вывод позволяет гораздо лучше понять предназначение задачи.
Удаление запланированной задачи при помощи atrm
Мы научились просматривать список запланированных задач и при желании их содержимое, теперь настало время рассмотреть способ их удаления из очереди при помощи программы atrm или команды at -d для удаления определенной задачи.
Данная команда ничего не выводит в консоль, но после ее выполнения вы можете убедиться в удалении задачи при помощи команды atq .
Ограничение круга пользователей программы at
Файлы /etc/at.allow и /etc/at.deny устанавливают пользователей, которые могут планировать задачи для последующего исполнения при помощи программ at и batch . В качестве формата этих файлов используется простой список имен пользователей по одному в каждой строке. Использование пробелов в этих файлах не допускается.
Пользователь root может использовать программы at и batch при любых условиях.
Как использовать команду «at» для планирования задачи в Linux
В качестве альтернативы планировщику заданий cron существует команда at, которая позволяет вам планировать выполнение команды один раз в заданное время без редактирования файла конфигурации.
Требование этой команды состоит в установке этой утилиты, и запуске, и включении ее выполнения:
Затем запустите и включите службу at во время загрузки.
Когда atd запущен, вы можете запланировать любую команду или задачу следующим образом. Мы хотим отправить 4 ping запроса на www.google.com, когда начнется следующая минута (т.е. если сейчас 22:20:13, команда будет исполнена в 22:21:00) и отправить результат по электронной почте (-m , Требуется Postfix для отправки почты или эквивалент) пользователю, используем следующую команду:
Если вы решите не использовать параметр -m, команда будет выполнена, но в выводе ничего не будет напечатано. Однако вы можете использовать перенаправление вывода в файл.
Кроме того, обратите внимание, что at не только позволяет использовать следующие фиксированные времена: вот например, в полдень (12:00) и в полночь (00:00), но также и с 2-значным (с указанием часов) и 4-значным временем (часы и минуты).
Например
Чтобы запустить updateb в 23 часа сегодня (или завтра, если текущая дата больше 11 часов), выполните:
Чтобы отключить систему в 23:55 сегодня (применяются те же критерии, что и в предыдущем примере):
Вы также можете отсрочить выполнение на минуты, часы, дни, недели, месяцы или годы, используя знак + и указать необходимое время, как в первом примере.
Формат указание времени (спецификации времени) соответствуют стандарту POSIX.
Выводы
Как правило, лучше использовать at вместо планировщика заданий cron всякий раз, когда вы хотите запустить команду или выполнить задание в заданное время только один раз. Для других случаев используйте cron.
Спасибо за уделенное время на прочтение статьи!
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University.
5 мин для чтения Команда 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:
По умолчанию, если команда выдает результат, atотправит электронное письмо с выводом пользователю после завершения задания. Вызвать at -M с возможностью подавления уведомления по электронной почте:
Используйте -m для отправки электронной почты, даже если нет вывода:
Команда batch
batch или его псевдоним at -b, планирует задания и выполняет их в очереди пакетов, когда позволяет уровень загрузки системы. По умолчанию задания выполняются, когда средняя загрузка системы ниже 1,5. Значение загрузки может быть указано при вызове демона atd. Если средняя загрузка системы выше указанной, задания будут ждать в очереди.
Чтобы создать задание 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.
- Приращение – at также принимает приращения в формате now + count time-unit, где count – это число и time-unit может быть одна из следующих строк: minutes, hours, days, или weeks.
Время, дата и приращение могут быть объединены, вот несколько примеров:
- Запланируйте работу на предстоящее воскресенье на десять минут позже текущего времени:
- Запланируйте работу на 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.