At
Version vom 18. Oktober 2025, 08:59 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= At - Einmalige Aufgabenplanung = * Der `at`-Befehl plant einmalige Aufgaben zu einem bestimmten Zeitpunkt in der Zukunft. * Im Gegensatz zu cron, der für w…“)
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
- at 14:30
→ Ö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
- at -l
→ Listet alle ausstehenden Jobs des aktuellen Benutzers
- atq
→ Gleiche Funktion wie at -l (Alias)
Job löschen
- at -d 1
→ Löscht Job mit der Nummer 1
- atrm 1
→ Gleiche Funktion wie at -d (Alias)
Job-Details anzeigen
- at -c 1
→ Zeigt den Inhalt des Jobs mit Nummer 1 an
Beispiele für Zeitangaben
- at 16:00
→ Heute um 16:00 Uhr
- at 09:00 tomorrow
→ Morgen um 09:00 Uhr
- at now + 2 hours
→ In 2 Stunden
- at noon + 5 days
→ In 5 Tagen um 12:00 Uhr
- at 14:30 2024-12-24
→ Am 24.12.2024 um 14:30 Uhr
- at midnight
→ 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
- at 23:00
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
At vs. Cron
At
- + Einfach für einmalige Aufgaben
- + Flexible Zeitplanung
- + Keine dauerhafte Konfiguration nötig
- - Keine Wiederholung
- - Begrenzte Umgebung
Cron
- + Ideal für regelmäßige Aufgaben
- + Dauerhafte Konfiguration
- + Vollständige Shell-Umgebung
- - Komplexer für einmalige Aufgaben
- - Feste Zeitintervalle
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