Stoppen von LaunchAgents und Daemons


23

Ich arbeite als Administrator in einem College-Umfeld. Eine der Herausforderungen besteht darin, die von Schülern mit CS-Hauptfach installierten Dienste zu beenden. Vor einiger Zeit erhielten sie den Administratorzugriff und installierten Startagenten und Daemons auf einigen Systemen. Die Studenten haben auch einige Plists wie com.apple.myprog.run hinzugefügt. Das Problem ist, dass diese nicht im launchagents-Verzeichnis oder im launchdaemons-Verzeichnis vorhanden sind.

Meine Frage ist also, wie Sie den Pfad für diese Daemon-Dienste finden können. Im nächsten Schritt erfahren Sie, wie Sie diese stoppen können. Da könnten einige von diesen immer wieder starten (basierend auf bestimmten Flags).


Ähnliches Problem. Ein Daemon, mit dem gestartet wurde, kann nicht gestoppt werden launchctl load -wF /Library/LaunchDaemons/name.of.this.plist.
Meltemi

Antworten:


20

Wenn Sie das Element für diesen Start stoppen möchten, geben Sie einfach einen Entladebefehl zum Starten über ein launchctl. Fügen Sie für eine dauerhafte Korrektur einen deaktivierten Schlüssel mit dem Wert true in die Liste ein oder löschen / verschieben Sie die Datei in einen Ordner, in dem launchd sie nicht automatisch scannt.

  • launchctl unload /System/Library/LaunchAgents/com.apple.AppStoreUpdateAgent.plist

Die Manpage für launchctl enthält eine nette Dokumentation zum Steuern von Jobs. Was die allgemeine Niederlage von CS-Majors betrifft, könnten Sie auch in Betracht ziehen, dass sie die vorhandenen Apple Plists bearbeitet haben, um sie dazu zu bringen, etwas zu tun, das Sie nicht erwarten. Es wird sich daher als weitaus einfacher erweisen, das Betriebssystem neu zu installieren und die Benutzerdaten zurück zu migrieren aus einer Sicherung (beachten Sie dabei, dass Sie alle plist-Dateien im Bereich / System / Library / Library erneut installieren müssen (und möglicherweise auch die ~ / Library von Admin-Benutzern prüfen müssen). Der Verlust von admin / root gegen jemanden, der weiß, wie man Änderungen vornimmt Das System ist im Grunde genommen aus dem Spiel und die Verteidigung (Auffinden und Deaktivieren) der Änderungen ist sehr zeitaufwendig im Gegensatz zum Angriff (Neuinstallation des Systems von einer bekannten guten Quelle und Verwendung von Konfigurationsverwaltungstools, um sicherzustellen, dass geänderte Dateien erkannt werden).


Der Punkt ist, dass ich nicht weiß, wo die Pliste aufbewahrt wurde. Ich habe im LaunchAgents-Verzeichnis gesucht und sehe dort keine App-Liste.
Prashant

Sie können überall sein. Sie können in den abgesicherten Modus booten und eine Ausgabe der Startliste mit der normalen Startliste vergleichen. mdfind zeigt Ihnen die Dateien mit den Rogue-Jobs an (sofern sie nicht von Spotlight ausgeschlossen wurden). Sie könnten theoretisch auch fs_usage gegen launchd selbst ausführen, um zu verfolgen, welche Dateien es während des Startvorgangs gelesen hat. Die Logistik, fs_usage so bald beim Startvorgang zum Laufen zu bringen, kombiniert mit der Tatsache, dass Sie immer noch jede plist-Datei überprüfen müssen, bedeutet, dass Sie viel haben von Arbeit ausgeschnitten, um "die Änderungen zu erkennen und sie chirurgisch zu entfernen", im Gegensatz zu sauber zu beginnen.
bmike

1
Wenn Sie wirklich jede .plist auf dem System finden möchten, ist dies der Fall. Es ist eine lange Liste. find / -type f -name "*.plist"
Fragen

man launchctl entladen In früheren Versionen wurde mit dieser Option die Konfigurationsdatei geändert. Jetzt wird der Status des deaktivierten Schlüssels an einer anderen Stelle auf der Festplatte gespeichert. .. (
Nakilon

@Nakilon Könnten Sie genaue Angaben zu den Versionen machen? Beziehen Sie sich auf die 10.11-Überholung von launchd oder eine andere "frühere Version"?
bmike

17

Der einfachste Weg, den ich gefunden habe, ist

sudo launchctl list | grep "rough name of what you want to find"
sudo launchctl remove "label.of.the.file"

Danke, das ist genau das, was ich wollte. So löschen Sie den Dienst nach dem Löschen der Datei!
chmac

2

Versuchen Sie, diese Standorte zu überprüfen:

/ Benutzer / Ihr Benutzername / Bibliothek / LaunchAgents /

/ Bibliothek / LaunchAgents /

/ Bibliothek / LaunchDaemons /

/ System / Bibliothek / LaunchAgents /

/ System / Library / LaunchDaemons /


1

Sie können einen "launchctl dumpstate" ausführen, der alle geladenen Dienste und den Pfad zur Startliste und den Inhalten anzeigt.

Sie werden es wahrscheinlich durchgehen wollen, da es viele Informationen ausgibt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.