At

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

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

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