Поиск по сайту:
То, что стоит сделать, стоит сделать хорошо (Н. Пуссен).

Команда At в Linux

05.05.2020
Команда At в Linux

at — это утилита командной строки, которая позволяет планировать выполнение команд в определенное время. Задания, созданные с помощью at, выполняются только один раз.

В этой статье мы расскажем, как использовать at и его компаньоны утилиты batch, atq, atrm, которые позволяют просматривать, удалять и создавать новые рабочие места, которые должны выполняться в более позднее время.

 

Установка at

В зависимости от дистрибутива at может присутствовать или не присутствовать в вашей системе Linux.

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

  • Установить at на Ubuntu и Debian
    sudo apt update 
    sudo apt install at
  • Установить at на CentOS и Fedora
    sudo yum install at

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

sudo systemctl enable --now atd

 

Как использовать команду at

Упрощенный синтаксис команды at выглядит следующим образом:

at [OPTION...] runtime

 

Команда at берет дату и время ( runtime), когда вы хотите выполнить задание в качестве параметра командной строки, и команду, которая будет выполнена из стандартного ввода.

Давайте создадим задание, которое будет выполнено в 12:00 утра:

at 12:00

 

После того, как вы нажмете Enter, вы увидите командную строку at, которая чаще всего начинается с at>. Вы также видите предупреждение о том, что оболочка, в которой будет выполняться команда:

warning: commands will be executed using /bin/sh
at>

 

Введите одну или несколько команд, которые вы хотите выполнить:

tar -xf /home/andreyex/file.tar.gz

 

Когда вы закончите ввод команд, нажмите Ctrl-D, чтобы выйти из командной строки и сохранить задание:

at> <EOT>
job 5 at Tue May  5 12:00:00 2020

 

Читать  3 способа узнать, какой процесс Linux прослушивает порт

Команда отобразит номер задания, время выполнения и дату.

Есть и другие способы передачи команды, которую вы хотите выполнить, помимо ввода команды at в командной строке. Одним из способов является использование echo и передача команды для at:

echo "command_to_be_run" | at 12:00

 

Другой вариант заключается в использовании здесь документа:

at 12:00 <<ENDcommand_to_be_runEND

 

Чтобы прочитать команды из файла вместо стандартного ввода, вызовите команду с опцией -f, следующей за путем к файлу. Например, чтобы создать задание, которое будет запускать скрипт /home/andreyex/script.sh:

at 12:00 -f /home/andreyex/script.sh

 

По умолчанию, если команда выдает результат, atотправит электронное письмо с выводом пользователю после завершения задания. Вызвать at -M с возможностью подавления уведомления по электронной почте:

at 09:00 -M

 

Используйте -m для отправки электронной почты, даже если нет вывода:

at 09:00 -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.
  • Приращение — at также принимает приращения в формате now + count time-unit, где count — это число и time-unit может быть одна из следующих строк: minutes, hours, days, или weeks.
Читать  Руководство по структуре данных кучи

Время, дата и приращение могут быть объединены, вот несколько примеров:

  • Запланируйте работу на предстоящее воскресенье на десять минут позже текущего времени:
    at sunday +10 minutes
  • Запланируйте работу на 14:00 через два дня:
    at 2pm + 2 days
  • Запланируйте работу на 12:30 25 октября 2020 года:
    at 12:30 102520
  • Запланируйте задание на выполнение через час:
    at now +1 hours

Вы также можете указать время и дату [[CC]YY]MMDDhhmm[.ss] используя опцию -t. Вот пример:

at -t 202005111321.32

 

Указание очереди

По умолчанию задания, созданные с помощью at, планируются в названной очереди, aа задания, созданные с помощью batch, планируются в очереди.

Запросы могут иметь имя от a до z и A до Z. Очереди со строчными буквами запускаются с меньшим количеством символов, что означает, что они имеют приоритет перед теми, которые имеют более высокие буквы.

Вы можете указать очередь с опцией -q. Например, чтобы установить задание в очередь L, вы должны выполнить:

at monday +2 hours -q L

 

Список ожидающих работ

Чтобы просмотреть список ожидающих заданий пользователя, введите команду atq или at -l:

atq

 

В выводе будут перечислены все задания, по одному на строку. Каждая строка содержит номер задания, дату, время, букву очереди и имя пользователя.

9	  Tue May  5 23:22:00 2020 a andreyex
12	Wed Oct 21 14:30:00 2020 a andreyex
15	Tue May  5 14:00:00 2020 a andreyex
6	  Tue May  5 14:00:00 2020 a andreyex
13	Mon May  4 14:08:00 2020 a andreyex
11	Wed Jul  1 15:00:00 2020 a andreyex
4	  Tue May  5 18:00:00 2020 a andreyex

 

Читать  Установка правильных разрешений .ssh/config

Когда atq вызывается как администратор, он перечисляет ожидающие работы всех пользователей.

 

Удаление отложенных заданий

Чтобы удалить отложенное задание, вызовите команду atrm или at -r, за которой следует номер задания. Например, чтобы удалить задание с номером три, вы должны выполнить:

atrm 3

 

Ограничение пользователей

Файлы /etc/at.deny и /etc/at.allow позволяют вам контролировать, какие пользователи могут создавать новые рабочие места с командой at или batch. Файлы состоят из списка имен пользователей, по одному имени пользователя в строке.

По умолчанию существует только файл /etc/at.deny и является пустым, что означает, что все пользователи могут использовать команду at. Если вы хотите отказать в разрешении определенному пользователю, добавьте имя пользователя в этот файл.

Если файл /etc/at.allow существует, только пользователи, перечисленные в этом файле, могут использовать команду at.

Если ни один из файлов не существует, только команда с правами администратора может использовать команду at.

 

Вывод

Утилита at считывает команду из стандартного ввода и выполняет их в более позднее время. В отличие от crontab, задания, созданные с помощью at, выполняются только один раз.

Для получения дополнительной информации обо всех доступных опциях типа команды at man at в вашем терминале.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 4,50 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Михаил

С каким приоритетом будет выполняться команда, запущенная через at ?

Это может быть вам интересно


Рекомендуемое
Фактически, по мере роста популярности карт поощрений, люди совершают больше…

Спасибо!

Теперь редакторы в курсе.