# at — Befehle zeitgesteuert einmalig ausführen

> Praxis-Guide zu at: Befehle zeitgesteuert einmalig ausführen, per Pipe oder Skript einreihen, mit atq und atrm verwalten – batch nutzt ruhige Lastzeiten.

Source: https://www.jpkc.com/db/cheatsheets/shell-system/at/

<!-- PROSE:intro -->
at führt einen Befehl nicht regelmäßig, sondern genau einmal zu einem späteren Zeitpunkt aus – ideal für einmalige Wartungen, einen verzögerten Neustart oder eine Erinnerung. Die Zeit gibst du erstaunlich flexibel an: als Uhrzeit, mit `now + 30 minutes` oder schlicht `tomorrow`. Voraussetzung ist der laufende `atd`-Daemon; geplante Jobs verwaltest du mit `atq` und `atrm`. Wer einen Job lieber dann startet, wenn das System ruhig ist, greift zu `batch`.
<!-- PROSE:intro:end -->

## Jobs planen

`at <time>` — Öffnet eine interaktive Eingabe für Befehle, die zur geplanten Zeit ausgeführt werden.

```bash
at 10:00
```

`echo '<command>' | at <time>` — Plant einen Befehl nicht-interaktiv per Pipe.

```bash
echo 'backup.sh' | at 02:00
```

`at -f <script> <time>` — Plant eine Skriptdatei zur Ausführung.

```bash
at -f /home/user/maintenance.sh 23:00
```

`at now + <number> <unit>` — Plant relativ zur aktuellen Zeit.

```bash
echo 'reboot' | at now + 30 minutes
```

## Zeitangaben

`at 14:30` — Führt heute zur angegebenen Uhrzeit aus (oder morgen, falls bereits vorbei).

```bash
echo 'echo done' | at 14:30
```

`at 2:00 PM` — 12-Stunden-Format mit AM/PM.

```bash
echo 'echo done' | at 2:00 PM
```

`at noon` — Führt mittags (12:00 Uhr) aus.

```bash
echo 'run-report.sh' | at noon
```

`at midnight` — Führt um Mitternacht (00:00 Uhr) aus.

```bash
echo 'cleanup.sh' | at midnight
```

`at 10:00 Jan 15` — Führt zu einem bestimmten Datum und einer bestimmten Uhrzeit aus.

```bash
echo 'deploy.sh' | at 10:00 Jan 15
```

`at now + 1 hour` — Führt in einer Stunde aus (Einheiten: minutes, hours, days, weeks).

```bash
echo 'check-status.sh' | at now + 1 hour
```

`at tomorrow` — Führt morgen zur gleichen Uhrzeit aus.

```bash
echo 'reminder.sh' | at tomorrow
```

## Jobs verwalten

`atq` — Listet alle anstehenden at-Jobs des aktuellen Benutzers auf.

```bash
atq
```

`at -l` — Listet anstehende Jobs auf (wie atq).

```bash
at -l
```

`at -c <job-id>` — Zeigt den Inhalt bzw. die Befehle eines geplanten Jobs.

```bash
at -c 5
```

`atrm <job-id>` — Entfernt einen geplanten Job.

```bash
atrm 5
```

`at -d <job-id>` — Löscht einen geplanten Job (wie atrm).

```bash
at -d 5
```

## batch-Kommando

`batch` — Plant einen Job, der ausgeführt wird, sobald die Systemlast niedrig ist (< 1,5).

```bash
echo 'heavy-task.sh' | batch
```

`batch -f <script>` — Plant ein Skript zur Ausführung, sobald die Last es zulässt.

```bash
batch -f /home/user/rebuild-index.sh
```

## Typische Anwendungsfälle

`echo 'systemctl restart nginx' | at 03:00` — Plant einen Dienst-Neustart in den Nebenzeiten.

```bash
echo 'sudo systemctl restart nginx' | at 03:00
```

`echo 'wall "Maintenance in 10 minutes"' | at now + 50 minutes` — Plant eine Broadcast-Warnmeldung an alle angemeldeten Benutzer.

```bash
echo 'wall "Server rebooting in 10 minutes"' | at now + 50 minutes
```

`at -M <time>` — Unterdrückt die Mail-Benachrichtigung nach Abschluss des Jobs.

```bash
echo 'cleanup.sh' | at -M 02:00
```

`at -m <time>` — Sendet eine Mail an den Benutzer, auch wenn der Job keine Ausgabe erzeugt.

```bash
echo 'important-task.sh' | at -m 14:00
```

<!-- PROSE:outro -->
## Fazit

at ist das Werkzeug der Wahl, wenn ein Befehl genau einmal und zeitversetzt laufen soll – für alles Wiederkehrende bleibt `cron` zuständig. Behalte im Blick, dass Jobs nur ausgeführt werden, solange der `atd`-Daemon läuft, und dass `/etc/at.allow` und `/etc/at.deny` regeln, wer überhaupt Jobs einreihen darf. Ausgabe und Fehler landen standardmäßig per lokaler Mail beim Benutzer; prüfe also `atq` und deine Mailbox, wenn ein geplanter Job scheinbar nichts getan hat.

## Weiterführende Links

- [ubuntuusers-Wiki: at](https://wiki.ubuntuusers.de/at/) – deutschsprachige Einführung in das Planen einmaliger Jobs mit at und batch
- [man-Page: at(1)](https://manpages.debian.org/bookworm/at/at.1.en.html) – offizielle Handbuchseite zu at, atq, atrm und batch (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [crontab](https://www.jpkc.com/db/cheatsheets/shell-system/crontab/) – plant wiederkehrende Aufgaben über die Cron-Tabelle
- [systemctl](https://www.jpkc.com/db/cheatsheets/shell-system/systemctl/) – steuert systemd-Dienste und -Timer als moderne Scheduling-Alternative
- [nohup](https://www.jpkc.com/db/cheatsheets/shell-system/nohup/) – lässt Befehle auch nach dem Abmelden weiterlaufen

