At - Einmalige Aufgabenplanung
- Der `at`-Befehl plant einmalige Aufgaben zu einem bestimmten Zeitpunkt in der Zukunft.
- Im Gegensatz zu cron, der für wiederkehrende Aufgaben gedacht ist, wird at für Jobs verwendet, die nur einmal ausgeführt werden sollen.
- Der at-Daemon (atd) überwacht die Warteschlange und führt die Jobs zum festgelegten Zeitpunkt aus.
Grundprinzip
- Jobs werden in einer Warteschlange verwaltet und zur angegebenen Zeit ausgeführt
- Die Ausgabe des Jobs wird per E-Mail an den Benutzer gesendet
- Der at-Daemon muss aktiv sein (service atd status)
Syntax
- at [OPTIONEN] ZEIT
- at [OPTIONEN] -f DATEI ZEIT
Zeitangabe-Formate
- HH:MM → 14:30 (heute um 14:30 Uhr)
- midnight → Mitternacht
- noon → Mittag (12:00)
- teatime → 16:00 Uhr
- tomorrow → Morgen
- HH:MM YYYY-MM-DD → 14:30 2024-12-24
- now + X minutes → jetzt + X Minuten
- now + X hours → jetzt + X Stunden
- now + X days → jetzt + X Tage
Wichtige Optionen
- -f DATEI → Liest Kommandos aus Datei statt STDIN
- -l → Listet ausstehende Jobs (alias atq)
- -d JOBNUMMER → Löscht Job (alias atrm)
- -v → Zeigt Zeit bevor Job ausgeführt wird
Verwaltung von At-Jobs
Job erstellen
→ Öffnet interaktive Eingabe für Kommandos (mit STRG+D beenden)
- at -f /pfad/zum/skript.sh 15:00
→ Liest Kommandos aus einer Datei
- echo "shutdown -h now" | at 23:59
→ Pipe-Kommando an at übergeben
Ausstehende Jobs anzeigen
→ Listet alle ausstehenden Jobs des aktuellen Benutzers
→ Gleiche Funktion wie at -l (Alias)
Job löschen
→ Löscht Job mit der Nummer 1
→ Gleiche Funktion wie at -d (Alias)
Job-Details anzeigen
→ Zeigt den Inhalt des Jobs mit Nummer 1 an
Beispiele für Zeitangaben
→ Heute um 16:00 Uhr
→ Morgen um 09:00 Uhr
→ In 2 Stunden
→ In 5 Tagen um 12:00 Uhr
→ Am 24.12.2024 um 14:30 Uhr
→ Heute um Mitternacht
Praktische Beispiele
System-Backup
- echo "tar -czf /backup/backup-$(date +%Y%m%d).tar.gz /home/" | at 02:00
→ Erstellt um 2:00 Uhr ein Backup der Home-Verzeichnisse
System-Neustart
- at -f /skripte/neustart.sh 04:00
→ Führt ein Neustart-Skript um 4:00 Uhr aus
Download planen
wget http://example.com/large-file.zip
STRG+D
→ Startet Download um 23:00 Uhr
Prozess-Beendigung
- echo "killall process-name" | at now + 30 minutes
→ Beendet Prozess in 30 Minuten
Besonderheiten
Umgebung
- At-Jobs werden in einer minimalen Umgebung ausgeführt
- PATH ist typischerweise auf /usr/bin:/bin beschränkt
- Vollständige Pfade zu Kommandos verwenden
Ausgabe
- Standard- und Error-Ausgabe werden per E-Mail an den Benutzer gesendet
- Keine Ausgabe auf Terminal wenn Job läuft
Berechtigungen
- Zugriff auf at kann über /etc/at.allow und /etc/at.deny kontrolliert werden
- Wenn at.allow existiert, nur gelistete Benutzer dürfen at verwenden
- Wenn at.deny existiert, alle außer gelistete Benutzer dürfen at verwenden
Aufgaben
- Plane einen Job, der in 10 Minuten die aktuelle Uhrzeit in eine Datei schreibt
- Erstelle einen Backup-Job für morgen früh um 3:00 Uhr
- Liste alle deine ausstehenden At-Jobs auf
- Lösche einen geplanten Job
- Teste die Ausführung eines einfachen Kommandos in 2 Minuten