Как использовать команду at в Linux для одноразовых задач

Введение
Автоматизация рутинных действий экономит время и снижает количество ошибок. Если cron хорош для повторяющихся задач, то at — простой и надёжный инструмент для одиночных, разовых запусков. Ниже — пошаговое руководство, примеры, рекомендации по безопасности и контроль задач.
Краткое определение: at — утилита для планирования одноразового выполнения команд в будущем.
Установка at на Linux
Пакет at не всегда предустановлен, но доступен в репозиториях всех популярных дистрибутивов. Установите его через пакетный менеджер вашей системы.
На Debian-подобных системах (Ubuntu, MX Linux, Pop!_OS):
sudo apt install atНа RPM-базированных системах (RHEL, Fedora, Rocky):
sudo dnf install atНа Arch-подобных (Manjaro):
sudo pacman -S atЗапуск демона планировщика atd
Команда at использует демон atd для выполнения отложенных заданий. Проверьте статус службы перед использованием:
sudo systemctl status atd
Если служба не запущена, включите её:
sudo systemctl start atdЧтобы автоматически запускать демон при загрузке, включите сервис:
sudo systemctl enable atdВажно: без запущенного atd задания не будут выполнены.
Планирование одноразовой задачи с помощью at
Общий синтаксис:
command | at time_stampПримеры:
- Записать список файлов текущей директории в файл через одну минуту:
cd ~
ls > list_items.txt | at now + 1 minutesПосле выполнения в домашней папке появится файл list_items.txt с выводом ls.

- Выполнить команду в полдень завтра:
ls > list_items.txt | at noon tomorrow- Указать точную дату и время (формат MMDDHHMM YYYY или читабельные ключевые слова):
ls > list_items.txt | at 12251300 2023Где 12251300 означает месяц=12, день=25, час=13, минута=00. Альтернативно можно использовать понятные выражения: now + 30 minutes, midnight, teatime и т. п.
Для подробностей смотрите man-страницу:
man atПланирование скриптов с at
Если нужно запустить готовый скрипт, используйте опцию -f:
Пример скрипта ~/disk_usage.sh:
#!/bin/bash
df -h > disk_usage.txtЗапуск через 30 минут:
at now + 30 minutes -f ~/disk_usage.shУбедитесь, что скрипт исполняемый:
chmod +x disk_usage.shВажно: at запускает команду в окружении пользователя, от имени которого было создано задание. Пути, переменные окружения и права доступа имеют значение — указывайте абсолютные пути в скриптах или экспортируйте переменные внутри скрипта.
Управление отложенными задачами
Просмотреть очередь заданий:
atq
Удалить задачу по номеру:
atrm <номер_задачи>Например:
atrm 12Практические рекомендации и шаблоны
Когда использовать at
- Одноразовая операция через точное время или «через N минут».
- Экстренные или разовые миграции, единоразовая отчётность, отложенная очистка логов.
Когда at не подходит
- Повторяющиеся задания (используйте cron или systemd timers).
- Задания, требующие сложной зависимости или оркестрации (используйте системы CI/CD или cron + systemd).
Альтернативы
- cron / crontab — для регулярных повторов.
- systemd timers — более современные таймеры с богатой интеграцией сервисов.
- atd в сочетании с batch — для заданий, выполняемых при небольшой загрузке системы.
Мини-методология: быстрое рабочее правило
- Определите частоту: одноразово → at, повторно → cron/systemd.
- Проверка окружения: абсолютные пути, экспорт переменных, права.
- Тестирование: выполните команду вручную, затем запланируйте на ближайшее время.
- Мониторинг: проверяйте atq и логи (syslog/journalctl) после исполнения.
Роль‑ориентированные чек‑листы
Администратор:
- Установил at и запустил atd.
- Включил службу при загрузке (systemctl enable).
- Проверил логи выполнения (journalctl -u atd).
Разработчик/DevOps:
- Убедился в корректности путей и прав в скрипте.
- Запланировал тестовое задание и подтвердил вывод.
- Документировал время и номер задания (atq).
Пользователь:
- Проверил очередь atq.
- Удалил лишние задания atrm.
Критерии приёмки
- Задание появилось в выходе atq до времени выполнения.
- Ожидаемый файл/результат создан или команда вернула нужный вывод.
- Логи atd не содержат ошибок выполнения.
Безопасность и приватность
- Права: at выполняет команды с правами того пользователя, который создал задание. Не используйте at от root для низкопривилегированных задач без необходимости.
- Ввод-вывод: по умолчанию вывод задания отправляется на локальную почту пользователя (local mail). Если вам не нужна почта — перенаправляйте вывод в файлы.
- Конфигурация доступа: файл /etc/at.allow и /etc/at.deny контролируют, кто может использовать at.
Отладка и логирование
- Просмотрите системный журнал для ошибок atd:
journalctl -u atd --since "1 hour ago"- Убедитесь, что PATH и другие переменные заданы в скрипте или используйте абсолютные пути.
Примеры нестандартных сценариев и как они могут провалиться
- Задача не выполняется: возможно, atd остановлен, задано неверное время или задача удалена.
- Скрипт не находит команды: используйте абсолютные пути (/usr/bin/df) или экспортируйте PATH внутри скрипта.
- Права доступа мешают записи файлов: проверяйте права целевых директорий.
Быстрая шпаргалка (Cheat sheet)
- Установить: sudo apt install at
- Старт службы: sudo systemctl start atd
- Список задач: atq
- Удалить задачу: atrm <номер>
- Запустить скрипт: at now + 30 minutes -f ~/script.sh
flowchart TD
A[Нужна задача однажды?] -->|Да| B[Использовать at]
A -->|Нет| C[Использовать cron или systemd timers]
B --> D{Демон atd запущен?}
D -->|Да| E[Запланировать команду]
D -->|Нет| F[Запустить/включить atd]
E --> G[Проверить atq и логи]Короткая глоссарий в одну строку
- at: утилита для планирования одноразового выполнения команд.
- atd: демон, который выполняет задания at.
- atq: команда для просмотра очереди at.
- atrm: команда для удаления задания at.
Итог
Команда at — простой инструмент для одноразового планирования задач: установите пакет, убедитесь, что atd запущен, протестируйте команду вручную и запланируйте её через удобный синтаксис. Для повторяющихся задач выбирайте cron или systemd timers. Соблюдайте права доступа, используйте абсолютные пути и проверяйте логи при возникновении проблем.
Краткое резюме
- at подходит для одноразовых запусков.
- Всегда проверяйте atd, права и окружение скрипта.
- Для повторов используйте cron/systemd.
Важно: Проверьте файлы /etc/at.allow и /etc/at.deny, если доступ к at ограничен на вашей системе.
Похожие материалы
Энергоэффективный майнер Ethereum: сборка и оптимизация
Удалить файлы cookie для одного сайта — Chrome, Firefox, Edge
Как убрать экран входа Ubuntu 23.04 в VMware
YouTube в терминале: ytfzf на Linux
Управление несколькими каналами YouTube