Post

Launchd auf dem Mac: Automatisierung richtig gemacht

Launchd auf dem Mac: Automatisierung richtig gemacht

Jeder, der schon mal einen Server verwaltet hat, kennt cron. Auf dem Mac gibt es zwar auch cron, aber der von Apple vorgesehene Weg für Hintergrunddienste und geplante Aufgaben ist launchd. Es ist mächtiger, moderner und tief im System verankert.

Was ist launchd?

launchd ist der zentrale Service Management Framework von macOS. Es kümmert sich um alles: Vom Systemstart bis hin zu kleinen Skripten, die alle 10 Minuten laufen sollen.

Agenten vs. Daemons

  • LaunchAgents: Laufen im Kontext eines angemeldeten Benutzers (ideal für Desktop-Automatisierungen).
  • LaunchDaemons: Laufen systemweit, auch wenn kein Benutzer angemeldet ist (ideal für Server-Dienste).

Eine eigene Aufgabe erstellen

Aufgaben für launchd werden in .plist-Dateien (XML-Format) definiert. Diese liegen meistens unter ~/Library/LaunchAgents/.

Ein einfaches Beispiel für ein Skript, das alle 300 Sekunden (5 Minuten) laufen soll:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.moestechblog.cleanup</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/mo/scripts/cleanup.sh</string>
    </array>
    <key>StartInterval</key>
    <integer>300</integer>
</dict>
</plist>

Die Steuerung mit launchctl

Um die Aufgabe zu aktivieren, nutzt man das Tool launchctl:

1
launchctl bootstrap gui/501 ~/Library/LaunchAgents/com.moestechblog.cleanup.plist

Warum launchd besser ist als cron

Im Gegensatz zu cron merkt sich launchd, wenn der Mac im Schlafmodus war. Eine Aufgabe, die verpasst wurde, kann direkt nach dem Aufwachen nachgeholt werden. Außerdem kann launchd Aufgaben basierend auf Datei-Änderungen oder Netzwerk-Status triggern.

Fazit

launchd wirkt am Anfang etwas sperrig wegen des XML-Formats, ist aber das stabilste Werkzeug für Automatisierung auf macOS. Wer sich einmal eingearbeitet hat, will cron auf dem Mac nicht mehr zurück.

This post is licensed under CC BY 4.0 by the author.