3.9.11.3 Планировщик заданий at
Отправка задач с помощью at
Непосредственный ввод команд
Запуск скрипта
Утилита atq
Указание очереди
Формат ввода даты
Утилита atrm
Функция batch
Файлы конфигурации
Окружение
- Версия ОС: 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 только с указанием времени, он предложит ввести необходимые к выполнению команды с помощью стандартного ввода (клавиатуры). После ввода последовательности команд нажмите сочетание клавиш 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
Функция batch
batch — функция для планирования задач, которые не требуется запускать немедленно, но необходимо гарантированно выполнить их в период низкой активности системы. Применяется для выполнения ресурсоемких процессов, таких как архивация, компиляция, резервное копирование и др.
batch ставит задачу в очередь и запускает ее, когда средняя нагрузка (load average) системы становится ниже определенного порога.
Порог нагрузки — это значение, ниже которого система считается «незагруженной». Обычно значение порога нагрузки составляет 0,8 – 1,5 на одно ядро процессора.
Перед использованием batch запустите и проверьте статус службы atd.
Для того чтобы запланировать выполнение какого-либо процесса с помощью функции batch, выполните команду:
batch
В появившейся строке приглашения at> введите команду или несколько команд, требующих выполнения в период низкой активности системы. Для завершения ввода нажмите сочетание клавиш Ctrl+D.
Пример планирования запуска ротации файлов журналов:
at> find /var/log -name "*.log" -mtime +30 -delete нажмите Enter at> systemctl restart rsyslog нажмите Enter at> нажмите Ctrl+D
Файлы конфигурации
Файлы конфигурации /etc/at.allow и /etc/at.deny служат для четкого указания пользователей, которым разрешено или не разрешено планировать исполнение задач с помощью службы atd.
Существует следующий порядок приоритета доступа пользователей:
1. Если существует файл /etc/at.allow (разрешающий). Используется только этот файл. Доступ к выполнению задач с помощью службы atd разрешен только тем пользователям, которые перечислены в /etc/at.allow. Файл /etc/at.deny при этом игнорируется.
2. Если файл /etc/at.allow не существует, но существует файл /etc/at.deny (запрещающий). Доступ к выполнению задач с помощью службы atd разрешен всем пользователям, кроме тех, которые перечислены в /etc/at.deny.
3. Если не существует обоих файлов /etc/at.allow, /etc/at.deny, доступ запрещен всем пользователям, кроме root.
Дата последнего изменения: 27.05.2026
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.