Artikel

Ventura und die at-jobs

Computer screen with code

Update: Syntax-Korrekturen, Danke @monkeydom und @teilweise

Nerd-Content incoming!

Der at-job ist ein kleines Helferlein, das auf Unix-artigen Betriebssystemen im Hintergrund Dinge in der Zukunft ausführt. Und das automatisch. Wenn ich möchte, dass ein Kommando zu einer bestimmten Zeit in der Zukunft, gerne auch an einem konkreten Datum zu einer bestimmten Uhrzeit, einmal ausgeführt wird, dann ist at mein Mittel der Wahl. Old-school quasi.

Das geschieht alles an der Kommandozeile und sieht zum Beispiel so aus:

at now + 10 minutes <<< kommando ('here string'-Syntax)

macOS ist unter der Haube ein solches Unix-artiges Betriebssystem, es unterstützt also auch at. 

Zwei Dinge finde ich an at besonders schön:

  1. Es ist Teil des Betriebssystems und muss nicht extra installiert und auf dem neuesten Stand gehalten werden
  2. Es feuert die Kommandos auch dann, wenn das Gerät (im konkreten Fall ein M2 MacBook Air) schläft. Und zwar egal, ob es am Strom hängt oder sich von der Batterie ernährt.

Leider ist at etwas versteckt und hinter diversen Sicherheitsmechanismen verschanzt. Aber mit zwei bis drei kleinen Tricks lässt es sich rauskitzeln. Hat mich etwas Zeit gekostet, das rauszukriegen, aber so geht's:

  1. Entsprechenden LaunchDaemon laden:
    launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
  2. Usernamen in /var/at/at.allow eintragen, die at benutzen dürfen, einen pro Zeile
  3. In System Preferences > Security & Privacy > Full Disk Access noch /usr/libexec/atrun eintragen

Ich hatte fast aufgegeben, da bin ich glücklicherweise über den letzten Punkt irgendwo in den Netz-Tiefen in einem unter-unter-Kommentar gestolpert. Danach tut's. Im Zweifel nochmal durchstarten. Die Nebenwirkungen der neuen macOS-Sicherheitsmaßnahmen sind bei sowas leider nicht immer gut (oder überhaupt) dokumentiert.

at -f feierabend.sh now + 45 minutes