Was sind LaunchAgents und LaunchDaemons auf dem Mac und welche kann ich entfernen
LaunchAgents und LaunchDaemons sind Ordner mit kleinen .plist-Dateien, die dem launchd von macOS sagen, was im Hintergrund wann gestartet wird. Ein Agent läuft für einen angemeldeten Benutzer und kann etwas auf dem Bildschirm zeigen; ein Daemon läuft für das ganze System ohne Benutzeroberfläche. Die Einträge von Drittanbietern einer App, die Sie nicht mehr haben, können Sie meist entfernen. Lassen Sie /System/Library in Ruhe, und stoppen Sie einen Job, bevor Sie seine Datei verschieben.
Die fünf Ordner
Apples launchd-Anleitung nennt diese Orte:
| Ordner | Was darin liegt | Anfassen |
|---|---|---|
~/Library/LaunchAgents |
Agents von Drittanbietern nur für Ihr Konto | Ja, mit Vorsicht |
/Library/LaunchAgents |
Agents von Drittanbietern für alle Benutzer | Ja, mit Administratorkennwort |
/Library/LaunchDaemons |
System-Daemons von Drittanbietern | Ja, mit Administratorkennwort |
/System/Library/LaunchAgents |
Apples Agents | Nein |
/System/Library/LaunchDaemons |
Apples Daemons | Nein |
Die Manpage man launchd zieht die Grenze: Ein Daemon ist ein systemweiter Dienst mit einer Instanz für alle Clients und sollte keine Benutzeroberfläche zeigen. Ein Agent läuft pro Benutzer, und Arbeit, die mit einem Benutzer interagiert, gehört dorthin. In der Praxis ist ein Menüleisten-Helfer oder Updater meist ein Agent, und ein VPN-Dienst, der Helfer eines Audiotreibers oder eine Backup-Engine meist ein Daemon.
Nicht jedes Hintergrundobjekt hat hier eine Datei. Apps können ihre plist im eigenen Bundle behalten, sodass Systemeinstellungen › Allgemein › Anmeldeobjekte & Erweiterungen etwas auflisten kann, das diese Ordner nicht enthalten. So verhindern Sie, dass Apps beim Start öffnen behandelt diesen Bildschirm.
Lesen Sie eine, bevor Sie urteilen
ls -la ~/Library/LaunchAgents /Library/LaunchAgents /Library/LaunchDaemons
plutil -p ~/Library/LaunchAgents/com.example.helper.plist
Vier Schlüssel erzählen den größten Teil der Geschichte:
| Schlüssel | Was er bedeutet |
|---|---|
Label |
Der Name des Jobs, den launchctl verwendet |
Program oder ProgramArguments |
Was ausgeführt wird. Dieser Pfad ist der, den Sie prüfen |
RunAtLoad |
Er startet, sobald der Job geladen wird, meist bei der Anmeldung oder beim Hochfahren |
KeepAlive |
launchd startet ihn neu, wenn er stoppt, ihn zu beenden hält also nicht |
com.example.helper oben ist ein Platzhalter, nehmen Sie also den Namen Ihrer eigenen Datei. Zeigt ProgramArguments auf eine App, die Sie entfernt haben, ist die Datei ein Überbleibsel und kann bedenkenlos weg. Zeigt sie auf eine App, die Sie noch nutzen, kann das Entfernen deren Updates, Synchronisierung, Lizenzierung, VPN oder Audio stören.
So entfernen Sie einen
Stoppen Sie zuerst den Job. Das Verschieben der Datei stoppt keinen Job, der bereits läuft, und er bleibt bis zur Abmeldung oder zum Neustart geladen.
Für einen Agent in Ihrem Konto:
launchctl bootout gui/$(id -u)/com.example.helper
mv ~/Library/LaunchAgents/com.example.helper.plist ~/.Trash/
Für einen Daemon in /Library/LaunchDaemons:
sudo launchctl bootout system/com.example.helper
sudo mv /Library/LaunchDaemons/com.example.helper.plist ~/.Trash/
Ein Agent in /Library/LaunchAgents wird in die Sitzung jedes Benutzers geladen. Stoppen Sie ihn deshalb in der Form gui/$(id -u)/ und verschieben Sie die Datei mit sudo mv. Verwenden Sie in diesen Befehlen den Wert von Label, der vom Dateinamen abweichen kann.
Ob er weg ist, bestätigen Sie mit launchctl print gui/$(id -u)/com.example.helper oder sudo launchctl print system/com.example.helper, was melden sollte, dass der Dienst nicht gefunden wurde. Nutzen Sie die App dann einen Tag lang. Ist etwas kaputtgegangen, legen Sie die Datei zurück und starten neu.
Um die Datei zu behalten und nur das Laden des Jobs zu verhindern:
launchctl disable gui/$(id -u)/com.example.helper
launchctl print-disabled gui/$(id -u)
launchctl enable mit demselben Ziel macht es rückgängig.
Was Sie nicht tun sollten
- Fassen Sie
/System/Library/LaunchAgentsund/System/Library/LaunchDaemonsnicht an. Sie liegen auf dem schreibgeschützten Systemvolume und gehören zu macOS. - Löschen Sie nicht allein nach dem Firmennamen. Eine Datei, die nach einem Sicherheitsprodukt oder Gerätetreiber benannt ist, kann der Weg sein, auf dem dieses Produkt weiter funktioniert, und auf einem verwalteten Mac kann es eine Unternehmensrichtlinie sein.
- Entfernen Sie nicht die plist einer App, die Sie noch nutzen, und erwarten Sie nicht, dass nur ihre Update-Meldung verschwindet. Prüfen Sie zuerst die eigene Einstellung der App.
- Verwenden Sie keine alten Anleitungen, die
launchctl unloadnennen. Apples Handbuch führt es als veralteten Unterbefehl, undbootoutist die aktuelle Form.
Wo Mole ins Spiel kommt
Der Tab Apps von Mole hat ein Segment Start, das diese Objekte auflistet, das Label jeder plist liest und Helfer nach der App benennt, der sie gehören. Es gruppiert sie unter Überschriften wie Anmeldeobjekte und Hintergrunddienste und markiert Programm fehlt, wenn ein Job auf etwas zeigt, das nicht mehr existiert, das übliche Zeichen eines Überbleibsels. Bei einer geprüften launchd-plist in ~/Library/LaunchAgents, /Library/LaunchAgents oder /Library/LaunchDaemons können Sie sie mit dem Schalter der Zeile ausschalten, wieder einschalten oder in den Papierkorb legen, und Mole stoppt zuerst den Job. Sicherheits- und Verwaltungsprodukte bleiben gesperrt, und Objekte, die es nicht sicher ändern kann, öffnen stattdessen die Systemeinstellungen. Wirkt ein Prozess in Status unbekannt, nennt Warum läuft das? den launchd-Dienst und seine plist. Wenn Sie eine App über Mole deinstallieren, werden auch ihre Startobjekte zur Prüfung angeboten.
Häufige Fragen
Ist es sicher, Dateien in LaunchAgents zu löschen?
Ja bei einem Überbleibsel einer App, die Sie entfernt haben, und manchmal nein bei einer App, die Sie noch nutzen. Lesen Sie zuerst ProgramArguments mit plutil -p, und stoppen Sie den Job mit launchctl bootout, bevor Sie die Datei in den Papierkorb legen, damit Sie sie zurücklegen können.
Was ist der Unterschied zwischen einem LaunchAgent und einem LaunchDaemon?
Ein Agent läuft für jeden angemeldeten Benutzer und kann mit ihm interagieren. Ein Daemon läuft systemweit mit einer Instanz, meist bevor sich jemand anmeldet, und hat keine Benutzeroberfläche.
Warum ist ein entfernter LaunchAgent zurückgekommen?
Die App, die ihn installiert hat, ist noch auf dem Mac und hat ihn beim nächsten Öffnen oder Aktualisieren neu geschrieben. Schalten Sie die Funktion in der App aus oder deinstallieren Sie die App, denn das Entfernen der Datei allein hält nicht.
Kann ein LaunchAgent Malware sein?
Ja. Hartnäckige Adware installiert sich oft hier, weil sie einen Neustart übersteht. Ein unbekanntes Label, das etwas aus einem versteckten Ordner oder einem temporären Pfad ausführt, verdient einen genaueren Blick: Suchen Sie nach dem genauen Pfad und prüfen Sie, wer das Programm signiert hat.
Muss ich nach dem Entfernen neu starten?
Nicht, wenn Sie launchctl bootout verwendet haben, das ihn sofort stoppt. Haben Sie nur die Datei verschoben, bleibt der Job bis zur Abmeldung oder zum Neustart geladen.