At Command в Linux

в команде

at — это утилита командной строки, позволяющая планировать автоматическое выполнение различных команд и скриптов в определённое время и дату. Задания, созданные с помощью at выполняются только один раз, что делает её отличным инструментом для управления разовыми задачами, которые необходимо выполнить в точное время.

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

Установка at

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

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

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

     sudo apt update sudo apt install at
  • Установить at CentOS и Fedora

     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

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

 at 09:00 < command_to_be_run END

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

 at 09:00 -f /home/linuxize/script.sh

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

 at 09:00 -M

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

 at 09:00 -m

batch команда

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

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

 echo "command_to_be_run" | batch

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

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

  • Время — чтобы указать время, используйте формат HH:MM или HHMM . Если вы предпочитаете 12-часовой формат времени, можно добавить «am» или «pm» после времени. Например, 10:30am или 6:45pm. Вы также можете использовать строки типа now , midnight , noon или teatime (16:00). Если задача или событие запланированы на время, которое уже прошло, они будут автоматически перенесены на то же время следующего дня.

  • Дата — эта команда позволяет запланировать выполнение задания на заданную дату. Дату можно указать, указав название месяца, день недели и (необязательно) год. В качестве альтернативы, для указания даты можно использовать строки, например, «сегодня», «завтра» или «будний день». Дату также можно указать в формате 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 .

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

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

     at sunday +10 minutes
  • Запланируйте выполнение задания на 13:00 через два дня:

     at 1pm + 2 days
  • Запланируйте выполнение задания на 12:30 21 октября 2020 года:

     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», выполните команду с опцией -q L :

 at monday +2 hours -q L

Список ожидающих вакансий

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

 atq

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

 9 Tue May 5 12:22:00 2023 a linuxize 12 Wed Oct 21 12:30:00 2023 a linuxize 15 Tue May 5 09:00:00 2023 a linuxize 6 Tue May 5 09:00:00 2023 a linuxize 13 Mon May 4 23:08:00 2023 a linuxize 11 Wed Jul 1 10:00:00 2023 a linuxize 4 Tue May 5 09:00:00 2023 a linuxize

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

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

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

 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 в терминале. Откроется страница руководства со списком всех доступных параметров с подробными пояснениями.

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

терминал в

Связанные руководства

Источник

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

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