←→ Underneath: Background Apps · Alle Mac-Anleitungen

So deaktivieren Sie Launch Agents auf dem Mac gefahrlos

Eine .plist aus LaunchAgents löschen – diesen Rat liest man am häufigsten. Es ist auch der schlechteste Weg: Der Job läuft bis zum nächsten Neustart weiter, und Sie können es nicht rückgängig machen. Hier ist der sichere, umkehrbare Weg.

Kurz gesagt: Ermitteln Sie das Label des Jobs und führen Sie dann Folgendes aus:

launchctl bootout gui/$(id -u)/com.example.label
launchctl disable gui/$(id -u)/com.example.label

Der erste Befehl stoppt den Job sofort. Der zweite hält ihn auch nach Neustarts aus. launchctl enable macht es rückgängig.

Bevor Sie beginnen: Fassen Sie nichts in /System/Library an und kein Label, das mit com.apple. beginnt. Diese gehören zu macOS. Lassen Sie VPN-, Backup-, Sicherheits- und Treiberprogramme in Ruhe, außer Sie entfernen das Programm.

Schritt 1: Den Job finden

Launch Agents und Daemons liegen in drei Ordnern, die Sie ändern dürfen:

Zeigen Sie an, was gerade geladen ist, ohne Apples eigene Jobs:

launchctl list | grep -v com.apple

Die Spalten sind Prozess-ID (-, wenn er nicht läuft), letzter Exit-Status und Label. Sie brauchen das Label.

Schritt 2: Prüfen, was er tut

plutil -p ~/Library/LaunchAgents/com.example.label.plist

Zeigt der Programmpfad auf eine App, die Sie gelöscht haben, ist der Job ein Überrest und kann gefahrlos entfernt werden. Ist es ein Updater, aktualisiert sich die App nach dem Deaktivieren nicht mehr von selbst.

Schritt 3: Sichern

mkdir -p ~/LaunchAgents-backup
cp ~/Library/LaunchAgents/com.example.label.plist ~/LaunchAgents-backup/

Schritt 4: Sofort stoppen

Für einen Agent (in einem der beiden LaunchAgents-Ordner):

launchctl bootout gui/$(id -u)/com.example.label

Für einen Daemon in /Library/LaunchDaemons:

sudo launchctl bootout system/com.example.label

Das entlädt den Job und beendet seinen Prozess. Das hält nicht über einen Neustart hinaus, wenn der Job RunAtLoad hat.

Schritt 5: Dauerhaft ausschalten

Wählen Sie eine Variante.

Variante A: launchctl disable (empfohlen)

launchctl disable gui/$(id -u)/com.example.label

Für einen Daemon: sudo launchctl disable system/com.example.label.

macOS speichert das Label in seiner eigenen Liste deaktivierter Jobs. Der Job bleibt also aus, selbst wenn die App ihre plist neu schreibt. Prüfen Sie die Liste mit:

launchctl print-disabled gui/$(id -u)

Variante B: Die plist wegverschieben

mkdir -p ~/Library/LaunchAgents/Disabled
mv ~/Library/LaunchAgents/com.example.label.plist ~/Library/LaunchAgents/Disabled/

launchd liest nur Dateien direkt im Ordner LaunchAgents, nicht in Unterordnern. Der Job wird also bei der nächsten Anmeldung nicht geladen. Die Datei ist noch da, falls Sie sie brauchen. Legt die App die plist neu an, kommt der Job zurück; Variante A verhindert das.

Variante C: Systemeinstellungen

Viele Jobs erscheinen auch unter Systemeinstellungen › Allgemein › Anmeldeobjekte & Erweiterungen › Im Hintergrund erlauben. Den Schalter dort auszuschalten, funktioniert auch, aber ein Schalter kann mehrere Jobs desselben Entwicklers abdecken. Siehe Was „Im Hintergrund erlauben“ bedeutet.

Schritt 6: Prüfen, ob es geklappt hat

launchctl list | grep com.example.label

Keine Ausgabe bedeutet, dass der Job nicht geladen ist. Starten Sie neu und führen Sie den Befehl zur Sicherheit noch einmal aus.

Rückgängig machen

Wenn Sie Variante A verwendet haben:

launchctl enable gui/$(id -u)/com.example.label
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.example.label.plist

Wenn Sie Variante B verwendet haben, verschieben Sie die Datei zurück und führen Sie dieselbe bootstrap-Zeile aus. Für Daemons verwenden Sie sudo und system statt gui/$(id -u).

Alte Befehle, die Sie im Netz finden

launchctl unload -w file.plist und launchctl load -w file.plist funktionieren noch, aber Apple bezeichnet sie als veraltet. bootout, bootstrap, disable und enable sind die aktuellen Befehle und liefern verständlichere Fehlermeldungen.

FAQ

Kann ich Dateien in LaunchAgents gefahrlos löschen?

Deaktivieren ist sicherer als Löschen. Das Löschen einer plist stoppt keinen Job, der bereits geladen ist, und die Datei ist weg, falls Sie sie wieder brauchen. Verwenden Sie launchctl bootout und launchctl disable oder verschieben Sie die Datei in einen Backup-Ordner.

Sollte ich launchctl unload -w verwenden?

Der Befehl funktioniert noch, aber Apple stuft load und unload als veraltet ein. Verwenden Sie unter aktuellem macOS launchctl bootout, um einen Job zu stoppen, und launchctl disable, um ihn ausgeschaltet zu lassen.

Kann ich Apple-Launch-Agents in /System/Library deaktivieren?

Lassen Sie es. Sie gehören zu macOS, der Systemintegritätsschutz (SIP) schützt die Dateien, und wenn Sie sie deaktivieren, können Funktionen wie iCloud, Spotlight oder Updates ausfallen.

Wie mache ich launchctl disable rückgängig?

Führen Sie launchctl enable gui/$(id -u)/<label> aus, dann launchctl bootstrap gui/$(id -u) mit dem Pfad der plist – oder melden Sie sich ab und wieder an.

Die App hat ihren Launch Agent wieder angelegt. Was nun?

Verwenden Sie launchctl disable. Damit wird das Label deaktiviert, und der Job bleibt aus, auch wenn die App die plist neu schreibt. Schalten Sie außerdem die Einstellung „Beim Anmelden starten“ in der App selbst aus.