Команда at в Linux
at— это мощный инструмент планирования задач по расписанию в системе Linux, позволяющий пользователям выполнять одноразовые задачи в указанное время, а не какcronвыполнять периодически подобно этому.
иcronПо сравнению с,atон больше подходит для следующих сценариев:
- Задачи, которые нужно выполнить только один раз
- Задачи, которые запускаются в определённый момент времени в будущем
- Временные операции по обслуживанию системы
Установка и базовое использование
Проверка установки
В большинстве дистрибутивов Linux он установлен по умолчаниюat, проверить можно следующей командой:
which at
Если он не установлен, можно установить его с помощью менеджера пакетов:
Пример
sudo apt-get install at
# CentOS/RHEL
sudo yum install at
Запустите службу at
После установки необходимо запуститьatdдемон:
Пример
sudo systemctl enable atd # Включить автозапуск при загрузке
Синтаксис команды и параметры
Базовый синтаксис
at [选项] 时间
Общие параметры
| Опция | Описание |
|---|---|
-f 文件 |
Читать команды из указанного файла вместо стандартного ввода |
-m |
Отправить электронное письмо пользователю после завершения задачи |
-l |
Вывести список задач, ожидающих выполнения (то же, что иatq) |
-d 任务ID |
Удалить указанную задачу (то же, что иatrm) |
-v |
Отобразить время, когда задача будет выполнена |
Формат времени
atПоддерживает несколько форматов времени:
-
Абсолютное время
HH:MM(e.g., 14:30)YYYY-MM-DD(e.g., 2023-12-25)- Комбинированный формат
HH:MM YYYY-MM-DD
-
Относительное время
now + 数量 单位(напримерnow + 2 hours)- Единицы измерения могут быть: минуты, часы, дни, недели
-
Специальные ключевые слова
noon(12 часов дня)midnight(полночь)teatime(4 часа дня)tomorrow(завтра в это же время)
Примеры использования
Пример 1: Базовое использование
Пример
предупреждение: команды будут выполнены с помощью /bin/sh
at> echo "Привет, команда at" > ~/at_test.txt
at> # Нажмите Ctrl+D, чтобы завершить ввод
задание 1 в вт июл 18 15:30:00 2023
Пример 2: Чтение команд из файла
Создайте файл сценарияmyscript.sh:
Пример
echo "This is a test" >> /tmp/at_log
date >> /tmp/at_log
Затем используйте:
at -f myscript.sh now + 5 minutes
Пример 3: Просмотр и удаление задач
Пример
1 Tue Jul 18 15:30:00 2023 имя пользователя
$ atrm 1 # или at -d 1
Продвинутое использование
Настройка переменных окружения
Пример
at> export MY_VAR="test"
at> echo $MY_VAR > ~/env_test.txt
at>
Выполнение сложных команд
Пример
at> cd /var/log && grep "error" syslog > ~/error_log.txt
at>
Использование Here Document
Пример
#!/bin/bash
echo "Starting backup..."
tar -czf ~/backup-$(date +%F).tar.gz ~/Documents
EOF
Примечания
-
Управление разрешениями
/etc/at.allowи/etc/at.denyФайлы управляют правами доступа пользователей- Если
at.allowсуществует, использовать могут только перечисленные пользователиat - Если
at.allowне существует, проверьтеat.deny, пользователям, перечисленным в нём, запрещено
-
Обработка вывода
- По умолчанию вывод команды отправляется пользователю по электронной почте
- Используйте
-mопция для принудительной отправки электронного письма, даже если вывод отсутствует
-
Различия окружения
atОкружение во время выполнения может отличаться от интерактивной оболочки- Важные переменные окружения должны быть явно заданы в команде
-
Обработка ошибок
- Проверить
atdзапущена ли служба:systemctl status atd - Просмотрите системные журналы, чтобы получить информацию об ошибке:
journalctl -u atd
- Проверить
Практические упражнения
- Создайте задачу, которая добавляет текущую дату и время в
~/time_log.txtфайл - Напишите скрипт для резервного копирования
/etcкаталога и используйтеatзапланируйте его выполнение на 2 часа ночи завтра - Вывести список всех текущих ожидающих
atзадач, затем удалить одну из них
Итог
atКоманда — мощный инструмент в системе Linux для управления одноразовыми запланированными задачами. Прочитав эту статью, вы должны были освоить:
atЕё основные понятия и методы установки- Способы указания различных форматов времени
- Операции создания, просмотра и удаления задач
- Расширенное использование и меры предосторожности
Для задач, которые необходимо выполнять периодически, рассмотрите использованиеcron, но для одноразовых задач,atявляется, несомненно, лучшим выбором.
Другие расширения
Справочник команд Linux