Команда at

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

Команда at предназначена для управления службой atd, которая установлена по умолчанию в большинстве дистрибутивов Linux.

Примеры использования

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

at <время> <дата>
at ЧЧ:ММ ММ/ДД/ГГ

Например, для исполнения команды в 12:15 после полудня в этот же день может использоваться следующая команда:

at 12:15 PM today

А для исполнения команды в 12:15 до полудня на следующий день — следующая:

at 12:15 tomorrow

Дата и время могут записываться в нескольких форматах: 02/01/09 или 02.01.09 и 4:00 pm или 16:00 соответственно.

После исполнения команды at с указанием времени и даты вы будете перемещены в простейшую интерактивную командную оболочку с приглашением at>. С помощью этой командной оболочки вы сможете ввести последовательность команд для исполнения, после чего вам нужно будет перейти на новую строку и воспользоваться сочетанием клавиш Ctrl+D для ее закрытия.

$ at 12:15
at> echo "i like linux-faq.ru"
at> ctrl-d
at> <EOT>
job 17 at Fri Nov 25 12:15:00 2016

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

Приведенная выше команда может быть запланирована для исполнения в то же время и с помощью следующей команды без необходимости работы с интерактивной командной оболочкой:

echo "i like linux-faq.ru" | at 12:15 tomorrow

Кроме того, вы можете использовать ключевые слова и числа. Например, для планирования исполнения команды в текущее время через неделю может использоваться следующая команда:

at now + 1 week

А для планирования исполнения команды в 4 часа утра через 3 для — следующая команда:

at 4:00 am + 3 days

Ознакомление со списком команд, запланированных для исполнения

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

at -l
atq

Удаление из очереди команд, запланированных для исполнения

Для удаления команд, запланированных для исполнения, из очереди следует использовать либо аргумент -d команды at, либо отдельная команда atrm:

at -d <идентификатор задачи>
atrm <идентификатор задачи>