At now command in linux

at command in Linux with Examples

Fundamentals of Unix and Linux System Administration

129 Lectures 23 hours

Essentials of Unix Operating System

5 Lectures 4.5 hours

Unix Command Course for Beginners

35 Lectures 2 hours

at — queue a jobs for later execution



at and batch command read commands from standard input or a specified file which are to be executed at a later time, using /bin/sh. at command executes commands at a specified time.

batch executes commands when system load levels permit; in other words, when the load average drops below 1.5, or the value specified in the invocation of atd command.

at allows fairly complex time specifications, extending the POSIX.2 standard. It accepts times of the form HH:MM to run a job at a specific time of day. (If that time is already past, the next day is assumed.) You may also specify midnight, noon, or teatime (4pm) and you can have a time-of-day suffixed with AM or PM for running in the morning or the evening. You can also say what day the job will be run, by giving a date in the form month-name day with an optional year, or giving a date of the form MMDD[CC]YY, MM/DD/[CC]YY, DD.MM.[CC]YY or [CC]YY-MM-DD. The specification of a date must follow the specification of the time of day. You can also give times like now + count time-units, where the time-units can be minutes, hours, days, or weeks and you can tell at to run the job today by suffixing the time with today and to run the job tomorrow by suffixing the time with tomorrow.

For example, to run a job at 4pm three days from now, you would do at at 4pm + 3 days , to run a job at 10:00am on July 31, you would do at 10am Jul 31 and to run a job at 1am tomorrow, you would do run at 1am tomorrow command.

If you specify a job to absolutely run at a specific time and date in the past, the job will run as soon as possible. For example, if it is 8pm and you do a at 6pm today, it will run more likely at 8:05pm.

For both at and batch , commands are read from standard input or the file specified with the -f option and then executed.


The options for at commands are:


1. at command without any arguments allows jobs to be executed once in the future at a predefined date or time without editing any configuration file.

We can see that the command has been queued, and its job id is 5, it also shows the time at which it would be executed.

We can see the ouput of the executed at command below.

2. We can also use at command to read commands from standard input, which would be executed at a later time, using ‘/bin/sh’.

3. We can see the list of jobs in the queue using atq command or use option -l which is an alias for atq command.

We can observe, as the time elapsed, one of the job is executed and there is one job less in the queue.

Читайте также:  Hp c4844a заправка картриджей

4. We can use atrm command to remove a job from the queue, or we can use option -r or -d which is an alias for atrm command.

5. We can use -f option to read the jobs from the file rather than standard input.


How to Use ‘at’ Command to Schedule a Task on Given or Later Time in Linux

As an alternative to cron job scheduler, the at command allows you to schedule a command to run once at a given time without editing a configuration file.

The only requirement consists of installing this utility and starting and enabling its execution:

Next, start and enable the at service at the boot time.

Once atd is running, you can schedule any command or task as follows. We want to send 4 ping probes to when the next minute starts (i.e. if it’s 22:20:13, the command will be executed at 22:21:00) and report the result through an email ( -m , requires Postfix or equivalent) to the user invoking the command:

If you choose to not use the -m option, the command will be executed but nothing will be printed to standard output. You can, however, choose to redirect the output to a file instead.

In addition, please note that at not only allows the following fixed times: now, noon (12:00), and midnight (00:00), but also custom 2-digit (representing hours) and 4-digit times (hours and minutes).

To run updatedb at 11 pm today (or tomorrow if the current date is greater than 11 pm), do:

To shutdown the system at 23:55 today (same criteria as in the previous example applies):

You can also delay the execution by minutes, hours, days, weeks, months, or years using the + sign and the desired time specification as in the first example.

Time specifications are subject to the POSIX standard.


As a rule of thumb, use at instead of cron job scheduler whenever you want to run a command or execute a given task at a well-defined time only once. For other scenarios, use cron.

Next, we shall cover how to encrypt tar archive files using openssl, till then stay connected to Tecmint.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

We are thankful for your never ending support.

5 thoughts on “How to Use ‘at’ Command to Schedule a Task on Given or Later Time in Linux”

How to add date along with time.

Very useful article

remove extra ‘d ‘ from atdd

# chkconfig –level 35 atdd on

Thanks for finding it useful, and corrected in the writeup..

Very useful, thank you!

Good article, Gabriel!

Just my 5 cents to it.

“at” can be used to start something on background, like nohup staff, but more short:
$ echo “rsync remote_resource local_resource” | at now
$ at -f /path/to/my/script -m now
just notice “-f script” option – it’s very convenient to run more complex staff

“at” can be used instead of cron to run something repeatedly after the first execution ends. This can eliminate cronjobs, scheduled to run each minute with various locks to avoid to run several commands simultaneously. One can add at the end of its script:
—— bash code snippet —–
# script payload here
this_script_name=$(basename $0)
this_script_path=$(readlink –canonicalize $(dirname $0))
at -f $this_script_path/$this_script_name now
—— bash code snippet —–
this will start the script again when it’s finished.

Another interesting application that’s unable to implement with cron is periodically execution with random intervals. Mostly the same as abouve, but just add random delay:
—— bash code snippet —–
# script payload here
this_script_name=$(basename $0)
this_script_path=$(readlink –canonicalize $(dirname $0))
delay=$(( ($RANDOM % $RANDOM_BIAS) + $MIN_DELAY ))
at -f $this_script_path/$this_script_name now + $delay min
—— bash code snippet —–

Читайте также:  Lsi sata raid linux


At now command in linux

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

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

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

Для планирования исполнения команд следует осуществлять вызов команды 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»
at> ctrl-d
job 17 at Fri Nov 25 12:15:00 2016

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

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

echo «i like» | at 12:15 tomorrow

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

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

at 4:00 am + 3 days

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

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

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

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


Команда at в Linux

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

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

Установка at

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

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

  • Установить at Ubuntu и Debian
  • Установить at CentOS и Fedora

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

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

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

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

Создадим задание, которое будет выполнено в 9:00:

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

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

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

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

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

Читайте также:  Puppy linux для планшета

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

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

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

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

batch команда

batch или его псевдоним at -b планирует задания и выполняет их в пакетной очереди, если позволяет уровень загрузки системы. По умолчанию задания выполняются, когда средняя загрузка системы ниже 1,5. Значение нагрузки можно указать при вызове демона atd . Если средняя загрузка системы выше указанной, задания будут ждать в очереди.

Чтобы создать 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 .

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

  • Запланируйте работу на ближайшее воскресенье на время на десять минут позже текущего:
  • Запланируйте запуск задания на 13:00 через два дня:
  • Запланируйте запуск задания на 12:30 21 октября 2020 г .:
  • Запланируйте запуск задания через час:

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

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

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

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

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

Список незавершенных вакансий

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

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

Когда 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 в вашем терминале.

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


Поделиться с друзьями