Служба 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 <идентификатор задачи>