- Команда at в дистрибутивах Linux
- Установка и синтаксис утилиты at
- Команда at: выполнение задач в определенное время
- Команда at: Запуск скриптов и других файлов
- Команда at в Linux
- Установка at
- Как использовать команду at
- batch команда
- Указание времени выполнения
- Указание очереди
- Список незавершенных вакансий
- Удаление незавершенных заданий
- Ограничение пользователей
- Выводы
Команда at в дистрибутивах Linux
Когда дело доходит до планирования задач в дистрибутивах Linux, многие прибегают к использованию Cron. Что может быть не всегда оправдано, особенно тогда, когда требуется запланировать одноразово какую-то задачу. В этом случае можно прибегнуть к мощному инструменту, который позволяет планировать одноразовые задачи, это команда at.
По сути, команда at представляет собой утилиту, которая позволяет пользователям запланировать выполнение команд или скрипта в указанное время. Команда at может быть полезна не только администраторам Linux, но и обычным пользователям. Например, выключить компьютер в определенное время или запустить программу.
Установка и синтаксис утилиты at
Как уже говорилось выше, at представляет собой утилиту, которую сначала необходимо установить. В данной статье рассмотрим установку в таких дистрибутивах как Debian/Ubuntu, Fedora и Manjaro. Итак, приступим:
Как видите, разница в установке только в пакетном менеджере. Перейдем к рассмотрению упрощенного синтаксиса команды at:
Ниже представлены некоторые опции, которые можно применить к команде at для выполнения задач:
- m – отправляет сообщение по электронной почте, когда задание выполнено.
- f файл – указывает файл, содержащий команды для выполнения.
- q очередь – определяет очередь, в которую будет отправлено задание.
- t время – указывает время выполнения задания.
- c команда – задает команду к выполнению.
Команда at: выполнение задач в определенное время
Итак, приступим к работе с командой at. Что бы выполнить какую-то задачу определенное время, вводим команду at и указываем время, появится пригласительная строка, в которую вводим для выполнения:
Этот пример запускает задание в 10:30 Вы можете заменить “10:30” на любое другое время, которое вам нужно. Для сохранения задания нажимаем сочетание клавиш “ctrl + d”. В некоторых случаях, запуск команды at нужно выполнять от root пользователя. Для примера запустим терминал в 06:06:
Выполнять задания команда at может также через определенное время. Скажем, необходимо выполнить какое-то действие через пять минут, а вы уже не будете находиться за компьютером. Для этого можно задать определенное время указав его после знака плюс:
at now + 5 minutes
at> ваша команда
Этот пример запускает задание через 5 минут от текущего времени: Команду at можно запрограммировать на выполнения на указанный день, дата в этом случае может быть указана: месяц/день/год. Можно также назначить выполнения задания скажем через два дня, например:
at 13:00 + 2 days
at> ваша команда
В целом, если вы не задаете дату команде at, то по умолчанию принимается текущая дата для выполнения задания.
Команда at: Запуск скриптов и других файлов
Теперь рассмотрим вариант запуска исполняемых файлов и скриптов. Что бы команда at выполняла запуск исполняемых файлов и скриптов, необходимо использовать опцию -f, указать явный путь, где расположен файл или скрипт, и указать время выполнения:
at -f /путь_до_файла/file.sh 10:30
Этот пример запускает задание, которое содержится в файле file.sh, в 10:30. Как вариант, зададим команде at задание на запуск скрипта, который в свою очередь выполняет запуск терминала. Файл расположен в директории “Документы”:
at -f /home/cyber-x/Документы/file.sh 13:50
В этом случае, вместо сочетания клавиш “ctrl + d” нажимается клавиша “Enter”:
Команда at в Linux
at — это утилита командной строки, которая позволяет вам планировать выполнение команд в определенное время. Задания, созданные с помощью at , выполняются только один раз.
В этой статье мы расскажем , как использовать at и его компаньоны утилитами batch , atq , atrm просматривать, удалять и создавать новые рабочие места , которые должны выполняться в более позднее время.
Установка at
В зависимости от дистрибутива at может присутствовать или отсутствовать в вашей системе Linux.
Если at не установлен, вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.
sudo apt update
sudo apt install at
После установки программы убедитесь, что atd , демон планирования запущен и настроен на запуск при загрузке:
sudo systemctl enable --now atd
Как использовать команду at
Упрощенный синтаксис команды at выглядит следующим образом:
Команда at принимает дату и время ( runtime ), когда вы хотите выполнить задание, как параметр командной строки, и команду, которая должна быть выполнена из стандартного ввода.
Создадим задание, которое будет выполнено в 9:00:
Как только вы нажмете Enter , вам будет представлена командная строка at которая чаще всего начинается с at> . Вы также увидите предупреждение о том, в какой оболочке будет выполняться команда:
warning: commands will be executed using /bin/sh at>
Введите одну или несколько команд, которые хотите выполнить:
tar -xf /home/linuxize/file.tar.gz
Когда вы закончите вводить команды, нажмите Ctrl-D чтобы выйти из подсказки и сохранить задание:
at> job 4 at Tue May 5 09:00:00 2020
Команда отобразит номер задания, время и дату выполнения.
Есть и другие способы , чтобы пройти команду , которую вы хотите запустить, помимо ввода команды в at строке. Один из способов — использовать echo и направить команду по at :
echo "command_to_be_run" | at 09:00
Другой вариант — использовать здесь документ :
at 09:00 command_to_be_run
END
Чтобы читать команды из файла вместо стандартного ввода, вызовите команду с параметром -f путь к файлу. Например, чтобы создать задание, которое будет запускать скрипт /home/linuxize/script.sh :
at 09:00 -f /home/linuxize/script.sh
По умолчанию, если команда производит вывод, at отправит электронное письмо с выводом пользователю после завершения задания. Invoke at с -M опцией для подавления уведомлений по электронной почте:
Используйте -m чтобы отправить электронное письмо, даже если нет вывода:
batch команда
batch или его псевдоним at -b планирует задания и выполняет их в пакетной очереди, если позволяет уровень загрузки системы. По умолчанию задания выполняются, когда средняя загрузка системы ниже 1,5. Значение нагрузки можно указать при вызове демона atd . Если средняя загрузка системы выше указанной, задания будут ждать в очереди.
Чтобы создать batch задание, передайте команды, которые хотите выполнить:
echo "command_to_be_run" | batch
Указание времени выполнения
Утилита at поддерживает широкий диапазон временных характеристик. Вы можете указать время, дату и приращение от текущего времени:
- Время — чтобы указать время, используйте форму HH:MM или HHMM . Чтобы указать 12-часовой формат времени, используйте am или pm после времени. Вы также можете использовать такие строки, как now , midnight , noon или teatime (16:00). По истечении указанного времени задание будет выполнено на следующий день.
- Дата — команда позволяет запланировать выполнение задания на заданную дату. Дату можно указать, используя название месяца, за которым следует день и (необязательно) год. Вы можете использовать строки, например, today , tomorrow или будний день. Дата также может быть указана в MMDD[CC]YY , MM/DD/[CC]YY , DD.MM.[CC]YY или [CC]YY-MM-DD .
- Increment — at также принимает приращения в формате now + count time-unit , где count — это число, а time-unit может быть одной из следующих строк: minutes , hours , days или weeks .
Время, дату и приращение можно комбинировать, вот несколько примеров:
- Запланируйте работу на ближайшее воскресенье на время на десять минут позже текущего:
Вы также можете указать время и дату в [[CC]YY]MMDDhhmm[.ss] используя параметр -t . Вот пример:
Указание очереди
По умолчанию задания, созданные с помощью at , планируются в очереди с именем a а задания, созданные с помощью batch , планируются в очереди b .
Запросы могут иметь имена от a до z и от A до Z Очереди с меньшими буквами работают с меньшей аккуратностью, что означает, что они имеют приоритет над очереди с более высокими буквами.
Вы можете указать очередь с помощью опции -q . Например, чтобы установить задание в L очередь, вы должны запустить:
Список незавершенных вакансий
Чтобы вывести список ожидающих заданий пользователя, выполните atq или at -l :
В выводе будут перечислены все задания, по одному в каждой строке. Каждая строка включает номер задания, дату, время, букву очереди и имя пользователя.
9 Tue May 5 12:22:00 2020 a linuxize 12 Wed Oct 21 12:30:00 2020 a linuxize 15 Tue May 5 09:00:00 2020 a linuxize 6 Tue May 5 09:00:00 2020 a linuxize 13 Mon May 4 23:08:00 2020 a linuxize 11 Wed Jul 1 10:00:00 2020 a linuxize 4 Tue May 5 09:00:00 2020 a linuxize
Когда atq вызывается от имени администратора, он перечисляет ожидающие задания всех пользователей.
Удаление незавершенных заданий
Чтобы удалить отложенное задание, atrm команду atrm или at -r после которой atrm номер задания. Например, чтобы удалить задание с номером девять, вы должны запустить:
Ограничение пользователей
/etc/at.deny и /etc/at.allow позволяют контролировать, какие пользователи могут создавать задания с помощью команды at или batch . Файлы состоят из списка имен пользователей, по одному имени пользователя в строке.
По умолчанию существует только файл /etc/at.deny и он пуст, что означает, что все пользователи могут использовать команду at . Если вы хотите отказать в разрешении определенному пользователю, добавьте имя пользователя в этот файл.
Если файл /etc/at.allow существует, только пользователи, перечисленные в этом файле, могут использовать команду at .
Если ни один из файлов не существует, только пользователи с правами администратора могут использовать команду at .
Выводы
Утилита at считывает команды со стандартного ввода и выполняет их позже. В отличие от crontab , задания, созданные с помощью at , выполняются только один раз.
Для получения дополнительной информации обо всех доступных параметрах команды at введите man at в вашем терминале.
Если у вас есть вопросы, не стесняйтесь оставлять комментарии.