Введение
cron отлично подходит для регулярно повторяющихся заданий — например, ежедневных или выполняемых каждый час. Однако иногда требуется запланировать задачу только на один раз в определённое время в будущем. Например, можно запланировать перезапуск службы сегодня в 2:00 или создание снимка базы данных через 30 минут.
Для таких одноразовых задач Linux предоставляет утилиту at.
Команда at считывает команды из стандартного ввода или файла и выполняет их позже. Это удобно, когда задачу нужно отложить, но не повторять. Такой подход отличается от модели повторяющегося расписания cron.
Главное концептуальное различие простое: cron описывает повторяющиеся расписания, а at добавляет в очередь одноразовое задание на будущее. Оба инструмента предназначены для автоматизации, но решают разные задачи, связанные со временем выполнения.
В этой лабораторной работе вы:
- Установите необходимые компоненты: убедитесь, что утилита
atустановлена, а её демон запущен. - Запланируете задание: добавите команду в очередь с помощью
at, чтобы выполнить её в будущем. - Проверите очередь: используете
atqдля просмотра ожидающих заданий. - Управите заданиями: удалите задание из очереди с помощью
atrm.
Установка утилиты at
Команда at установлена не во всех дистрибутивах Linux по умолчанию. Сначала необходимо проверить, что утилита установлена, а её фоновая служба запущена.
Как и cron, at зависит от демона. Введённая команда создаёт описание задания в очереди, а фоновая служба позже запускает это задание.
- Установите пакет:
sudo apt-get install -y at
- Для выполнения запланированных команд система
atиспользует фоновый демонatd. Запустите службу:
sudo service atd start
- Проверьте, что служба активна:
sudo service atd status
В выводе должно быть указано, что atd запущен.
Планирование задания
Теперь система готова. Проверим работу at, запланировав простую задачу: создать файл через 5 минут.
Для начала выполните команду at, указав нужное время:
at now + 5 minutes
Приглашение изменится на at>. Это означает, что команда ожидает ваш ввод. Введите команду, которую нужно выполнить:
Этот интерфейс отличается от cron: at интерактивно получает текст команды будущего задания. По сути, вы вводите тело одноразовой задачи и отправляете его в очередь.
echo "Hello LabEx" > /home/labex/project/hello.txt
Сохранение и выход:
- Нажмите Ctrl + D.
Вы должны увидеть <EOT> (End of Transmission) и сообщение с подтверждением, например job 1 at ....
Это подтверждает, что задание добавлено в очередь.
Просмотр ожидающих заданий (atq)
После планирования задания может потребоваться проверить, добавлено ли оно в очередь, или узнать его идентификатор Job ID.
Для просмотра очереди используется команда atq:
atq
Обычно вывод выглядит так: 1 Mon Oct 23 10:05:00 2023 a labex
Расшифровка:
- 1: идентификатор задания Job ID. Этот номер понадобится для удаления задания.
- Дата и время: время, на которое запланирован запуск задания.
- Пользователь: пользователь, которому принадлежит задание.
Просмотр очереди важен, потому что после отправки запланированное задание легко забыть. Команда atq позволяет проверить ожидающие задачи до их выполнения.
Если очередь пуста, задание уже могло выполниться или не было добавлено в очередь.
Отмена задания (atrm)
Если вы передумали или обнаружили ошибку, можно удалить задание из очереди до его запуска.
Используйте команду atrm, указав после неё идентификатор Job ID.
Сначала проверьте идентификатор с помощью atq — на предыдущем шаге это, вероятно, был 1. Затем выполните:
atrm 1
Теперь убедитесь, что очередь пуста:
atq
Команда не должна вывести ничего. Это подтверждает, что задание отменено. Файл создан не будет.
Отмена показывает, что задания в очереди — это управляемые объекты, а не просто команды, запущенные без возможности контроля. Вы можете просматривать задания, находить их по идентификатору и удалять до выполнения, если ваш план изменился.
Итоги
В этой лабораторной работе вы научились управлять одноразовыми задачами:
- Установка: настройка
atиatd. - Планирование (
at): использование синтаксиса вродеat now + 5 minutesдля добавления будущих команд в очередь. - Просмотр (
atq): проверка очереди, идентификаторов Job ID и времени выполнения ожидающих заданий. - Удаление (
atrm): удаление определённых заданий из очереди по их идентификатору.
Используйте cron для повторяющихся расписаний, а at — для однократного отложенного выполнения.



