3.9.11.3 Планировщик заданий at
Скачать документОтправка задач с помощью at
Непосредственный ввод команд
Запуск скрипта
Утилита atq
Указание очереди
Формат ввода даты
Утилита atrm
Файлы конфигурации
Окружение
- Версия РЕД ОС: 8
- Конфигурация: Рабочая станция
- Версия ПО: at-3.1.23-1
Бывают ситуации, когда необходимо однократно выполнить команды или скрипт в определённое время. Такую задачу можно решить с помощью планировщика at, представленного службой atd.
Для использования службы atd сначала необходимо ее запустить:
systemctl start atd
Проверить статус службы можно командой:
systemctl status atd
Обратите внимание, что служба atd не имеет связанного терминала. Одной из определяющих характеристик службы atd является то, что она отказывается от связи с терминалом, который ее запустил.
Вы можете подробнее ознакомиться с настройкой утилиты at, просмотрев наши обучающие видео:
на RuTube — Планировщик задач в РЕД ОС. Команда at;
в Яндекс.Дзен — Планировщик задач в РЕД ОС. Команда at;
в VK Видео — Планировщик задач в РЕД ОС. Команда at.
На наших каналах вы также сможете найти много другой полезной информации.
Отправка задач с помощью at
Команда at используется для отправки заданий и запуска в определенное время сервису atd. Задания, созданные с помощью at , выполняются только один раз.
Подробную информацию об утилите можно посмотреть с помощью команды:
man at
Справка по использованию утилиты доступна при выполнении команды:
at --help
Непосредственный ввод команд
Если выполнить at только с указанием времени, он предложит ввести необходимые к выполнению команды с помощью стандартного ввода (клавиатуры). После ввода последовательности команд нажмите сочетание клавиш «Ctrl+D», чтобы выйти и сохранить задание. При вводе непосредственно с терминала «Ctrl+D» указывает на "конец файла".
at 8:22 warning: commands will be executed using /bin/sh at> echo "$(date)" > /home/user/at.txt at> job 1 at Thu Dec 8 08:22:00 2022
Запуск скрипта
Если необходимо разово в определенное время запустить скрипт, тогда кроме нужного времени потребуется указать путь к файлу сценария, используя ключ -f. Можно дополнительно указать ключ -m, чтобы получить системное сообщение на почту при любом исходе выполнения команды.
at -f <имя_файла> -m <время>
Например:
at -f /home/user/at.sh -m 10:30 warning: commands will be executed using /bin/sh job 4 at Thu Dec 8 10:30:00 2022
Утилита atq
Проверка установленного для исполнения задач порядка и времени может осуществляться с помощью утилиты atq или команды at -l
.
atq 2 Wed Dec 7 16:45:00 2022 a user 4 Thu Dec 8 10:30:00 2022 a user 1 Thu Dec 8 08:22:00 2022 a user 3 Thu Dec 8 10:30:00 2022 a user
В выводе перечислены все задания, по одному в каждой строке. Каждая строка включает номер задания, дату, время, букву очереди и имя пользователя.
Указание очереди
По умолчанию задания, созданные с помощью at, планируются в очереди с именем «a».
Запросы могут иметь имена от «a» ... «z» до «A» ... «Z». Очереди со строчными буквами имеют приоритет над очередями с прописными буквами.
Вы можете указать очередь с помощью опции -q. Например, чтобы установить задание в M-очередь, необходимо выполнить команду вида:
at monday +2 hours -q M at -f /home/user/at.sh 10:30 -q M atq 2 Wed Dec 7 16:45:00 2022 a user 5 Mon Dec 12 15:32:00 2022 M user 4 Thu Dec 8 10:30:00 2022 a user 1 Thu Dec 8 08:22:00 2022 a user 6 Thu Dec 8 10:30:00 2022 M user 3 Thu Dec 8 10:30:00 2022 a user
Формат ввода даты
При формировании команды необходимо указывать время запуска, однако также предусмотрено указание и даты.
Если дата не указана, то принимается текущая, а если указанное время в текущий день уже прошло, задача планируется на следующий день.
Время дня можно указать в формате ЧЧ:ММ с суффиксом «am» или «pm». Также могут использоваться термины «midnight», «noon», и «teatime».
Дата также может быть указана в нескольких форматах, включая ММ/ДД/ГГ.
Более подробное описание команды можно найти на странице справки:
man at
Утилита atrm
Запланированные к исполнению задачи могут быть удалены из очереди с помощью утилиты atrm
или at -r
. Для этого достаточно ввести команду и указать номер запланированной задачи.
Например:
atrm 5 atq 2 Wed Dec 7 16:45:00 2022 a user 4 Thu Dec 8 10:30:00 2022 a user 1 Thu Dec 8 08:22:00 2022 a user 6 Thu Dec 8 10:30:00 2022 M user 3 Thu Dec 8 10:30:00 2022 a user
Файлы конфигурации
Можно использовать файлы конфигурации /etc/at.allow и /etc/at.deny для четкого указания пользователей, которые могут или не могут планировать исполнение задач с помощью службы atd.
Файл /etc/at.allow содержит список пользователей, которым позволено осуществлять планирование исполнения задач с помощью службы atd. В том случае, если файла /etc/at.allow не существует, служба atd может использоваться любым пользователем, имя которого не внесено в файл /etc/at.deny.
Файл /etc/at.deny содержит список пользователей, которым запрещено осуществлять планирование исполнения задач с помощью службы atd.
В случае, если не существует ни одного из этих файлов, службу atd по прямому назначению может использовать любой пользователь.
Если вы планируете передать at команду, требующую прав суперпользователя, помните, что она будет выполняться без присмотра — sudo не будет работать, т.к. никто не может ввести пароль. Для возможности отслеживания действий сначала войдите в систему как пользователь root, либо используйте команду sudo at
.
Дата последнего изменения: 24.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.