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

Команда 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> ваша команда

Читайте также:  Нужен ли linux домашних

Этот пример запускает задание через 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_runEND

Чтобы читать команды из файла вместо стандартного ввода, вызовите команду с параметром -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 в вашем терминале.

Если у вас есть вопросы, не стесняйтесь оставлять комментарии.

Источник

Оцените статью
Adblock
detector