# phpman > man > at

> **TLDR:** Execute commands once at a later time.
>
- Create commands interactively and execute them in 5 minutes (press `<Ctrl d>` when done):
  `at now + 5 minutes`
- Create commands interactively and execute them at a specific time:
  `at {{hh:mm}}`
- Execute a command from `stdin` at 10:00 AM today:
  `echo "{{command}}" | at 1000`
- Execute commands from a given file next Tuesday:
  `at -f {{path/to/file}} 9:30 PM Tue`
- List all queued jobs for the current user (same as `atq`):
  `at -l`
- View a specied job:
  `at -c {{job_number}}`

*Source: tldr-pages*

---

[AT(1)](https://www.chedong.com/phpMan.php/man/AT/1/markdown)                                  General Commands Manual                                 [AT(1)](https://www.chedong.com/phpMan.php/man/AT/1/markdown)



## NAME
       at, batch, atq, atrm - queue, examine, or delete jobs for later execution

## SYNOPSIS
       **at** [**-V**] [**-q** _queue_] [**-f** _file_] [**-u** _username_] [**-mMlv**] _timespec_ ...
       **at** [**-V**] [**-q** _queue_] [**-f** _file_] [**-u** _username_] [**-mMkv**] [**-t** _time_]
       **at** **-c** _job_ [...]
       **at** [**-V**] -l [**-o** _timeformat_] _[job_ _..._]
       **atq** [**-V**] [**-q** _queue_] [**-o** _timeformat_] _[job_ _..._]
       **at** [**-rd**] _job_ [...]
       **atrm** [**-V**] _job_ [...]
### batch
### at -b

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

       **at**      executes commands at a specified time.

       **atq**     lists the user's pending jobs, unless the user is the superuser; in that case, every‐
               body's  jobs  are  listed.  The format of the output lines (one for each job) is: Job
               number, date, hour, queue, and username.

       **atrm**    deletes jobs, identified by their job number.

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

       **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 **to**‐‐
       **day** 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** **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 **at** **1am** **tomorrow.**

       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.

       The definition of the time specification can be found in _/usr/share/doc/at/timespec_.

       For both **at** and **batch**, commands are read from standard input or the file specified  with  the
### -f
       **BASH**___**VERSINFO**, **DISPLAY**, **EUID**, **GROUPS**, **SHELLOPTS**, **TERM**, **UID**, and ___) and the umask are retained
       from the time of invocation.

       As **at** is currently implemented as a setuid program, other environment variables (e.g., **LD**___**LI**‐‐
       **BRARY**___**PATH** or **LD**___**PRELOAD**) are also not exported.  This may change in the future.  As a  work‐
       around, set these variables explicitly in your job.

       An  **at**  -  or **batch** - command invoked from a [**su**(1)](https://www.chedong.com/phpMan.php/man/su/1/markdown) shell will retain the current userid.  The
       user will be mailed standard error and standard output from his commands, if any.  Mail  will
       be  sent  using  the  command  **/usr/sbin/sendmail**.  If **at** is executed from a [**su**(1)](https://www.chedong.com/phpMan.php/man/su/1/markdown) shell, the
       owner of the login shell will receive the mail.

       The superuser may use these commands in any case.  For other users, permission to use  at  is
       determined by the files _/etc/at.allow_ and _/etc/at.deny_.  See [**at.allow**(5)](https://www.chedong.com/phpMan.php/man/at.allow/5/markdown) for details.

## OPTIONS
### -V

### -q
               uses  the  specified  queue.   A queue designation consists of a single letter; valid
               queue designations range from **a** to **z** and **A** to **Z**.  The **a** queue is the default  for  **at**
               and  the  **b** queue for **batch**.  Queues with higher letters run with increased niceness.
               The special queue "=" is reserved for jobs which are currently running.

       If a job is submitted to a queue designated with an uppercase letter, the job is  treated  as
       if  it  were  submitted to batch at the time of the job.  Once the time is reached, the batch
       processing rules with respect to load average apply.  If **atq** is given a  specific  queue,  it
       will only show jobs pending in that queue.

### -m

### -M

### -u
               Sends mail to _username_ rather than the current user.

### -f

### -t

### -l

### -r

### -d

### -b

### -v

       Times displayed will be in the format "Thu Feb 20 14:50:00 1997".

### -c

### -o

## FILES
       _/var/spool/cron/atjobs_
       _/var/spool/cron/atspool_
       _/proc/loadavg_
       _/var/run/utmp_
       _/etc/at.allow_
       _/etc/at.deny_

## SEE ALSO
       [**at.allow**(5)](https://www.chedong.com/phpMan.php/man/at.allow/5/markdown), [**at.deny**(5)](https://www.chedong.com/phpMan.php/man/at.deny/5/markdown), [**atd**(8)](https://www.chedong.com/phpMan.php/man/atd/8/markdown), [**cron**(1)](https://www.chedong.com/phpMan.php/man/cron/1/markdown), [**nice**(1)](https://www.chedong.com/phpMan.php/man/nice/1/markdown), [**sh**(1)](https://www.chedong.com/phpMan.php/man/sh/1/markdown), [**umask**(2)](https://www.chedong.com/phpMan.php/man/umask/2/markdown).

## BUGS
       The  correct  operation  of **batch** for Linux depends on the presence of a _proc_- type directory
       mounted on _/proc_.

       If the file _/var/run/utmp_ is not available or corrupted, or if the user is not logged  on  at
       the time **at** is invoked, the mail is sent to the userid found in the environment variable **LOG**‐‐
       **NAME**.  If that is undefined or empty, the current userid is assumed.

       **At** and **batch** as presently implemented are not suitable  when  users  are  competing  for  re‐
       sources.  If this is the case for your site, you might want to consider another batch system,
       such as **nqs**.

## AUTHOR
       At was mostly written by Thomas Koenig.



                                             2009-11-14                                        [AT(1)](https://www.chedong.com/phpMan.php/man/AT/1/markdown)
