С чего начать Первые шаги трек · 15 ступеней
Linux Labs

at — разовое задание по времени

3 мин Linux · at

Выполнить команду один раз в заданное время — в отличие от регулярного cron.

Шпаргалка

6 команд Версия для печати
  • echo "команда" | at 03:00 разово в 3:00
  • at now + 30 minutes через 30 минут
  • at -f script.sh 02:00 файл-скрипт
  • atq показать очередь заданий
  • at -c 5 показать содержимое задания №5
  • atrm 5 удалить задание №5
  • вывод уходит почтой — перенаправляй сам: "cmd > /tmp/out 2>&1"

Обзор

at запускает команду один раз в указанное время (в отличие от cron — повторяющегося расписания). Удобно для отложенных разовых действий: перезагрузить ночью, выключить через час, авто-откат правила firewall. Демон atd.

bash
systemctl status atd
echo "systemctl restart nginx" | at 03:00      # выполнить в 3:00

Ключи

6

Ниже — основные ключи at, atq, atrm; полный список — man at.

Ключ Что делает Пример
-f file Взять команды из файла-скрипта, а не из stdin. at -f script.sh 02:00
-l Показать очередь заданий текущего пользователя (то же, что atq). at -l
-c job_id Показать содержимое и окружение поставленного задания. at -c 5
-m Прислать письмо пользователю, даже если у команды нет вывода. at -m 03:00
-r job_id Удалить задание из очереди (то же, что atrm). опасно at -r 5
-q queue Поставить задание в другую очередь (влияет на nice-приоритет выполнения). at -q b 03:00

Ничего не найдено. Попробуй запрос короче.

Рецепты

2

Команды

bash
at 03:00                          # интерактивно (вводишь команды, Ctrl+D — конец)
at now + 1 hour                   # через час (minutes/hours/days/weeks)
at 14:30 tomorrow
at 2026-07-01                     # на дату
at -f script.sh 02:00             # выполнить файл-скрипт
echo "cmd" | at midnight          # из конвейера
batch                             # выполнить, когда нагрузка спадёт (load < 1.5)

atq                               # очередь заданий (id, время, очередь)
at -c 5                           # показать содержимое (и окружение) задания №5
atrm 5                            # удалить задание (= at -r 5)

Форматы времени

at 17:00              at 5pm              at now + 30 minutes
at midnight           at noon             at teatime   (16:00)
at 10:00 Jul 31       at 10am tomorrow    at now + 2 days

Доступ регулируется /etc/at.allow / /etc/at.deny (кто может ставить задания).

Неполадки

5

Задание не выполнилось

Демон atd должен работать (systemctl status atd). Результат at приходит почтой локальному пользователю (/var/mail/), stdout/stderr туда — не на экран. Перенаправляй сам: echo "cmd > /tmp/out 2>&1" | at ....

Команда «не нашлась» в at

Как и cron, at имеет скудное окружение (но at сохраняет текущее env на момент постановки — at -c ID покажет). Всё равно надёжнее абсолютные пути (см. env-vars).

Нужно отменить

atq (найти id) → atrm <id>.

at: command not found / нет atd

Пакет at не установлен или демон не запущен: sudo apt install at, sudo systemctl enable --now atd.

Разовое vs регулярное vs службой

Разово — at; по расписанию — cron/systemd-таймеры; постоянный сервис — systemd-юнит. «Когда не занят» — batch.

См. также

  • cron — Запуск задач по расписанию — классический cron и современные systemd-таймеры.
  • background-jobs — Запуск в фоне, управление задачами оболочки, чтобы процесс пережил выход.
  • systemd — Init-система и менеджер служб (PID 1): юниты, цели, зависимости, журналы.
Загрузка…