Гид по технологиям

Как планировать одноразовые задачи на Linux с помощью at

4 min read Linux Обновлено 29 Dec 2025
Планирование одноразовых задач на Linux с at
Планирование одноразовых задач на Linux с at

ПК с Linux, на экране крупно отображено время

Управление временем — навык, который проще автоматизировать. Компьютеры хорошо выполняют повторяющиеся и точные задачи. На Linux для таких целей обычно используют cron для повторяющихся заданий и at для одноразовых запусков в заданное время.

Установка at на Linux

Утилита at не всегда предустановлена. Установите её через менеджер пакетов вашей дистрибуции.

  • Debian/Ubuntu, MX Linux, Pop!_OS:
sudo apt install at
  • RHEL, Fedora, Rocky Linux (DNF):
sudo dnf install at
  • Arch/Manjaro:
sudo pacman -S at

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

Запуск службы планировщика atd

at использует демон планировщика atd. Перед отправкой задач проверьте статус службы:

sudo systemctl status atd

Проверка статуса демона планировщика atd

Если демон не запущен, запустите его:

sudo systemctl start atd

При необходимости включите автозапуск:

sudo systemctl enable --now atd

Планирование задач с помощью at

Базовый синтаксис отправки команды в очередь:

command | at time_spec

Пример: создать файл со списком содержимого текущей директории через минуту.

  1. Перейдите в домашнюю папку пользователя:
cd ~
  1. Отправьте команду в at:
ls > list_items.txt | at now + 1 minutes

Планирование простого задания через at

at вернёт идентификатор задания. Через минуту файл list_items.txt будет создан в вашей домашней папке.

Пример запуска в полдень следующего дня:

ls > list_items.txt | at noon tomorrow

Для точной привязки по дате используйте формат MMDDHHMM YYYY. Например, выполнить команду 25 декабря 2023 года в 13:00:

ls > list_items.txt | at 12251300 2023

Справка по форматам времени и дополнительным опциям доступна в man-странице:

man at

Примечание по локализации: выражения вроде “noon” и “tomorrow” зависят от локали и интерпретации парсера времени; при сомнениях используйте числовой формат.

Планирование скриптов с помощью at

at может запускать не только одиночные команды, но и целые скрипты. Предположим, что в домашней папке есть скрипт disk_usage.sh, который сохраняет вывод df -h в файл disk_usage.txt:

#!/bin/bash

df -h > ~/disk_usage.txt

Сделайте скрипт исполняемым и запустите через 30 минут:

chmod +x ~/disk_usage.sh
at now + 30 minutes -f ~/disk_usage.sh

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

Управление ожидающими задачами

Просмотр всех ожидающих задач:

atq

Список задач, выведенный командой atq

Удаление задачи по номеру:

atrm 

Пример удаления задачи №12:

atrm 12

Когда at не подходит

  • Повторяющиеся задания. Для периодических задач используйте cron или systemd timers.
  • Долгие сценарии, требующие сложного окружения. at запускает задачи в простом окружении без профильных инициализаций.
  • Зависимые цепочки задач с условиями успеха/провала. Для этого подходят orchestration-инструменты или systemd с юнитами и зависимостями.

Сравнение с cron

  • at: одноразовый запуск в указанное время.
  • cron: регулярные, повторяющиеся задания (минуты/часы/дни).
  • systemd timers: современная альтернатива с логированием и управлением юнитами.

Выбор: если нужно однократное действие — at. Если задача будет выполняться периодически — cron или systemd timers.

Шпаргалка команд и привычные сценарии

  • Отправить команду на исполнение в 20:00:
command | at 20:00
  • Использовать файл с командами (ввод в at из файла):
at -f /path/to/commands.txt 22:00
  • Планировать скрипт:
at now + 15 minutes -f ~/script.sh
  • Просмотреть очередь задач текущего пользователя:
atq
  • Удалить задачу по номеру:
atrm 5
  • Проверить статус службы:
sudo systemctl status atd

Отладка и распространённые ошибки

  • Файл не создаётся после запуска: проверьте, использовались ли абсолютные пути в скрипте и нет ли ошибок в самих командах.
  • Скрипт не исполняется: убедитесь, что у него установлен бит исполнения (chmod +x) и правильный shebang (например, #!/bin/bash).
  • Задание не выполняется из-за выключенного atd: запустите сервис и проверьте логи через journalctl:
sudo journalctl -u atd --since "1 hour ago"
  • Переменные окружения отсутствуют: явно экспортируйте необходимые переменные в скрипте или используйте полный PATH внутри скриптов.

Мини‑методика: как надёжно отправить одноразовое задание

  1. Подготовьте скрипт с абсолютными путями и shebang.
  2. Сделайте скрипт исполняемым: chmod +x script.sh.
  3. Убедитесь, что atd запущен и включён.
  4. Отправьте скрипт через at: at now + N minutes -f ~/script.sh.
  5. Проверьте очередь atq и логи atd при ошибках.

Чек‑лист для роли пользователя

  • Пользователь

    • Использовать абсолютные пути
    • Тестировать команду вручную перед отправкой в at
    • Проверять atq
  • Администратор

    • Убедиться, что atd запущен и включён
    • Проверять логи и права доступа к файлам
    • Настраивать безопасность (ограничение доступа к at через /etc/at.allow и /etc/at.deny)

1‑строчный глоссарий

  • at: утилита для однократного планирования команд.
  • atd: демон, который выполняет задания at.
  • atq: просмотреть очередь задач.
  • atrm: удалить задачу из очереди.

Критерии приёмки

  • Задание появляется в выводе atq до времени запуска.
  • Файл/результат создаётся в указанном месте после времени запуска.
  • В логах atd нет ошибок, связанных с выполнением задания.

Краткая сводка

at удобен для одноразовых задач и простых автоматизаций. Для периодических работ используйте cron или systemd timers. Всегда проверяйте окружение и права доступа — at запускает задания в сжатом окружении, и это частая причина проблем.

Важное: настройте /etc/at.allow и /etc/at.deny при необходимости ограничить, кто может планировать задания.

Спасибо за внимание — пользуйтесь at, когда нужна простая и быстрая одноразовая автоматизация на Linux.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Настройка яркости Echo Dot с часами
Умный дом

Настройка яркости Echo Dot с часами

Автообновления на PS5: настройка и советы
Игры

Автообновления на PS5: настройка и советы

Как отключить Google Assistant на всех устройствах
Инструкции

Как отключить Google Assistant на всех устройствах

Отключение автозапуска звука в браузерах
Браузеры

Отключение автозапуска звука в браузерах

Как просмотреть закрытый профиль Facebook и защитить данные
Конфиденциальность

Как просмотреть закрытый профиль Facebook и защитить данные

Как установить будильник на Mac — все способы
macOS

Как установить будильник на Mac — все способы