---
name: "atrun"
section: "8"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/atrun"
---

# atrun(8)

run jobs queued for later execution

## NAME

**atrun** – run jobs queued for later execution

## SYNOPSIS

**atrun** \[**-l** *load\_avg*\] \[**-d**\]

## DESCRIPTION

**Atrun** runs jobs queued by [at(1)](/at/1.md).

The system [crontab(5)](/crontab/5.md) file */etc/cron.d/at* must contain the line

```
*/5     *       *       *       *       root    /usr/libexec/atrun
```

so **atrun** is invoked every five minutes.

At every invocation, **atrun** starts all the jobs in the lowercase queues whose start time has elapsed. In addition, if the load average over the last minute was less than the specified limit, then a maximum of one batch job (denoted by the uppercase queues) is started.

Before starting a job, **atrun** checks the status of its owner's account with [pam(3)](/pam/3.md) and refuses to run the job if the account is unavailable, e.g., locked out or expired.

## OPTIONS

- **-l** *load\_avg*

  Specify a limiting load factor, over which batch jobs should not be run, instead of the default of 1.5 \* number of active CPUs.

- **-d**

  Debug; print error messages to standard error instead of using [syslog(3)](/syslog/3.md).

## WARNINGS

For **atrun** to work, a [cron(8)](/cron/8.md) daemon must be running **atrun** periodically.

## FILES

- */etc/pam.d/atrun*

  [pam.conf(5)](/pam.conf/5.md) configuration file for **atrun**

- */var/at/jobs*

  Directory containing job files

- */var/at/spool*

  Directory containing output spool files

## SEE ALSO

[at(1)](/at/1.md), [crontab(1)](/crontab/1.md), [pam(3)](/pam/3.md), [syslog(3)](/syslog/3.md), [crontab(5)](/crontab/5.md), [pam.conf(5)](/pam.conf/5.md), [cron(8)](/cron/8.md)

## BUGS

The functionality of **atrun** should be merged into [cron(8)](/cron/8.md).
