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

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

5 min read Linux Обновлено 15 Apr 2026
Команда at в Linux: запуск одноразовых задач
Команда at в Linux: запуск одноразовых задач

ПК с 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

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

Если служба не запущена, включите её:

sudo systemctl start atd

Чтобы автоматически запускать демон при загрузке, включите сервис:

sudo systemctl enable atd

Важно: без запущенного atd задания не будут выполнены.

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

Общий синтаксис:

command | at time_stamp

Примеры:

  1. Записать список файлов текущей директории в файл через одну минуту:
cd ~
ls > list_items.txt | at now + 1 minutes

После выполнения в домашней папке появится файл list_items.txt с выводом ls.

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

  1. Выполнить команду в полдень завтра:
ls > list_items.txt | at noon tomorrow
  1. Указать точную дату и время (формат 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

вывод списка заданий atq в терминале

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

atrm <номер_задачи>

Например:

atrm 12

Практические рекомендации и шаблоны

Когда использовать at

  • Одноразовая операция через точное время или «через N минут».
  • Экстренные или разовые миграции, единоразовая отчётность, отложенная очистка логов.

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

  • Повторяющиеся задания (используйте cron или systemd timers).
  • Задания, требующие сложной зависимости или оркестрации (используйте системы CI/CD или cron + systemd).

Альтернативы

  • cron / crontab — для регулярных повторов.
  • systemd timers — более современные таймеры с богатой интеграцией сервисов.
  • atd в сочетании с batch — для заданий, выполняемых при небольшой загрузке системы.

Мини-методология: быстрое рабочее правило

  1. Определите частоту: одноразово → at, повторно → cron/systemd.
  2. Проверка окружения: абсолютные пути, экспорт переменных, права.
  3. Тестирование: выполните команду вручную, затем запланируйте на ближайшее время.
  4. Мониторинг: проверяйте 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 ограничен на вашей системе.

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

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

Энергоэффективный майнер Ethereum: сборка и оптимизация
Криптовалюта

Энергоэффективный майнер Ethereum: сборка и оптимизация

Удалить файлы cookie для одного сайта — Chrome, Firefox, Edge
Приватность

Удалить файлы cookie для одного сайта — Chrome, Firefox, Edge

Как убрать экран входа Ubuntu 23.04 в VMware
Виртуализация

Как убрать экран входа Ubuntu 23.04 в VMware

YouTube в терминале: ytfzf на Linux
Linux

YouTube в терминале: ytfzf на Linux

Управление несколькими каналами YouTube
Видео

Управление несколькими каналами YouTube

Управление зомби‑процессами в Linux
Linux

Управление зомби‑процессами в Linux