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

Планирование задач в Linux с at

• 5 min read • Linux • Обновлено 23 Nov 2025
Планирование задач в Linux с at
Планирование задач в Linux с at

Схема использования команды at в Linux

Первый раз, когда я управлял загруженным сервером, мне приходилось ждать удобного момента для перезагрузки — обычно это было около 3:00. Я подумал: «Неприятно просыпаться ради перезагрузки». Через несколько секунд понял простую вещь: это Linux — такие задачи легко автоматизировать. Так я открыл для себя утилиту at.

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

Также: Руководство по использованию Cron в Linux.

Установка at в разных дистрибутивах Linux

На Debian и производных (Ubuntu, Linux Mint) выполните:

sudo apt install at

Установка at на Debian/Ubuntu

На Fedora:

sudo dnf install at

На Arch Linux:

sudo pacman -S at

На openSUSE:

sudo zypper install at

Включение автоматического запуска демона atd и запуск сервиса

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

systemctl is-enabled atd.service

Проверка включения сервиса atd

Если вывод показывает “disabled”, включите сервис и запустите его:

sudo systemctl enable atd.service
sudo systemctl start atd.service

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

Форматы указания времени для at

at принимает несколько форматов времени. Вот основные варианты:

  1. Запуск через заданный интервал:
at now + 10 minutes
at now + 10 hours
at now + 10 days
at now + 10 weeks

Пример задания через несколько дней

  1. Запуск в конкретное время того же дня:
at 23:10

Если сейчас 12:00 и вы укажете at 11:00, команда выполнится завтра в 11:00.

  1. Запуск в конкретную дату и время:
at 12:00 December 31

Другие способы и тонкости описаны в онлайн-мануале at (man at).

Как пользоваться командой at (интерактивное приглашение)

Когда вы задаёте время, at открывает интерактивное приглашение (пример ниже):

Интерактивное приглашение at

В приглашении введите нужные команды, каждая — новая строка. Команды выполнятся под вашей текущей учётной записью. Когда закончите ввод, нажмите Ctrl+D. Появится подтверждение с временем выполнения.

Если команды требуют root-привилегий, не используйте sudo внутри задания — это не сработает, потому что at запускает задания без возможности ввода пароля. Вместо этого:

sudo -i

А затем выполните at от имени root. После планирования выйдите из root:

exit

Пример планирования выключения через at

Если компьютер выключен в момент, когда задание должно было сработать, оно выполнится при следующем включении, если время уже прошло.

Просмотр и удаление запланированных заданий

Просмотреть очередь заданий:

atq

или

at -l

Просмотр очереди at

Чтобы увидеть содержимое задания, используйте его номер (префикс):

at -c 22

Просмотр команд в задании at

Чтобы удалить задание по номеру:

atrm 22

Планирование графических приложений через at

Чтобы запустить графическое приложение, нужно передать значение переменной окружения DISPLAY и при необходимости XAUTHORITY. Часто DISPLAY равен :0. Узнать текущее значение можно так:

echo $DISPLAY

В приглашении at задайте DISPLAY и запустите приложение:

export DISPLAY=:0
export XAUTHORITY=/home/youruser/.Xauthority
libreoffice &
Ctrl+D

Запуск графического приложения через at

Пример открытия LibreOffice по расписанию

Теперь приложение откроется на рабочем столе и напомнит о задаче.

Когда at — не лучшее решение

  • Периодические задачи (каждый день/неделю) лучше ставить в cron или systemd timers.
  • Когда требуется сложная логика повторов с пропуском при выключении — посмотрите anacron или systemd timers.
  • Если нужна надёжность в кластере — используйте средства оркестрации или CI/CD.

Альтернативы и сравнение (когда выбирать что)

  • at — однократные задания в будущем. Простота и интерактивность.
  • cron — регулярные, повторяющиеся задания (min/hour/day/week/month).
  • systemd timers — замена cron для systemd-систем; удобны интеграцией с сервисами и логами.
  • anacron — выполняет пропущенные задания после простоя машины; полезно для ноутбуков.

Mermaid-диаграмма выбора:

flowchart TD
  A[Нужно одноразовое действие?] -->|Да| B[Используйте at]
  A -->|Нет| C[Нужно повторение?]
  C -->|Да| D[cron или systemd timers]
  C -->|Нет| E[Оцените orchestration/CI]

Карточка-чесатка: основные команды (cheat sheet)

  • Установить пакет: sudo apt install at
  • Запустить демон: sudo systemctl start atd.service
  • Запланировать через 10 минут: at now + 10 minutes
  • Запланировать на 23:10: at 23:10
  • Посмотреть очередь: atq
  • Посмотреть задание: at -c <номер>
  • Удалить задание: atrm <номер>

Контроль безопасности и рекомендации

  • Ограничьте запуск at для определённых пользователей через /etc/at.allow и /etc/at.deny.
  • Не храните в заданиях пароли в открытом виде.
  • Для заданий с повышенными привилегиями используйте исполнение от пользователя root и ведите аудит действий (rsyslog, journald).
  • Учитывайте, что задания, запускаемые в графическом сеансе, могут получить доступ к сессии пользователя — контролируйте XAUTHORITY.

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

Руководство на случай проблем (Runbook)

  1. Проверка статуса демона:
systemctl status atd.service
  1. Проверка очереди:
atq
  1. Просмотр логов (journald):
journalctl -u atd.service
  1. Если задания не выполняются, проверьте /etc/at.allow и /etc/at.deny, права на скрипты и переменные окружения.

  2. При необходимости удалите подозрительные задания: atrm <номер>.

Критерии приёмки (как понять, что задание выполнено)

  • Задание отсутствует в выводе atq после ожидаемого времени.
  • В логах journald или rsyslog присутствует запись о запуске команды/скрипта.
  • Ожидаемый эффект (файл, процесс, уведомление) появился.

Контроль качества и тесты (тест-кейсы)

  • Планирование простого echo: запланируйте echo test > /tmp/at-test через 2 минуты, дождитесь появления файла.
  • Тест с root: выполните задание от root, которое записывает в /root, и подтвердите доступ.
  • Пропуск выполнения при выключении: запланируйте задание в ближайший час, выключите компьютер и включите позже — задание должно выполниться при следующем запуске, если время просрочено.

Списки задач по ролям

Администратор сервера:

  • Установить at и atd, включить сервис.
  • Настроить /etc/at.allow и /etc/at.deny.
  • Аудит логов и тестирование заданий.

Пользователь рабочего стола:

  • Проверить DISPLAY и XAUTHORITY для графических приложений.
  • Использовать абсолютные пути в заданиях.
  • Оповестить себя через графическое приложение или уведомление.

Краткий глоссарий

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

Заключение

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

Резюме:

  • at хорош для one-off задач.
  • Для повторов используйте cron/systemd timers.
  • Контролируйте доступ и логи, тестируйте задания заранее.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро