Den wahren Status von gestarteten Jobs finden [geschlossen]

4
launchctl list

launchctl bstree

Diese zeigen, welche Jobs angeblich aktiv, ruhend oder inaktiv sind. Ich habe noch nie einen inaktiven Job gesehen. Sogar diejenigen, die ich zu deaktivieren versucht habe, werden als "D" angezeigt.

Jetzt gibt es in /var/db/launchd.db Textdateien, in denen pro Benutzer angezeigt wird, welche Jobs tatsächlich deaktiviert sind. Bedauerlicherweise war der alte Schalter -w veraltet, und der Schlüssel Disabled in der Plist ist nur eine Standardeinstellung. Ich weiß nicht, warum sie so etwas tun würden, es scheint keine Möglichkeit zu geben, dies definitiv zu sagen

"Service X ist ausgeschaltet."

Es scheint, als würde ich als root fragen können, was an und was aus ist. Was mache ich falsch?

EDIT: Was ich falsch gemacht habe, war zu ignorieren

/var/db/launchd.db/com.apple.launchd/overrides.plist

Welches ist der definitive Ort anscheinend für den aktuellen Zustand eines Daemons.

Praktischerweise bedeutet dies, dass die Standardeinstellung in den plist-Dateien unter / System / Launch * / Library / Launch * ~ / Library / Launch * enthalten ist und man dieses Verzeichnis einfach wegblasen (errrm copy and move) und in einen Standardsatz neu starten kann . Das hat kürzlich bei mir funktioniert.

chiggsy
quelle
Ich stimme dafür, diese Frage zu schließen, da die Antwort in der Frage veröffentlicht wird und sich die veröffentlichten Versionen im Laufe der Zeit geändert haben. Wenn Sie eine ähnliche Frage haben, stellen Sie diese bitte und geben Sie genau an, welche Version von launchdIhnen ausgeführt wird.
bmike

Antworten:

3

Der wahre Status ist, ob ein Job gerade geladen ist oder nicht.

Lesen Sie die Philosophie von launchd noch einmal durch - In den Punkten 4 und 1 wird erläutert, dass launchd bis zum letzten Moment wartet, bevor die untergeordnete Aufgabe gestartet wird. Dieser Prozess wird mit dem Zeitplan für den Start, dem Drosseln und dem Deaktivieren von Aufgaben nach Bedarf fortgesetzt.

Diese werden alle zur Systemprotokollierung protokolliert. topund pszeigt Ihnen die aktuellen Prozesse. Ich nehme an, Sie können launchd einfach an einen Debugger anhängen, wenn Sie den genauen Status kennen müssen, da der aktuelle Code keine Liste nach Ihren Wünschen erstellt.

bmike
quelle
5

Die gestartete GUI LaunchControl gibt Ihnen eine Liste von Diensten mit ihrem jeweiligen Status. Sie können feststellen, ob ein Job deaktiviert wurde, indem Sie das Kontrollkästchen neben dem Jobnamen aktivieren. Ein farbiges Kontrollkästchen zeigt an, dass der deaktivierte Schlüssel überschrieben wurde: Ein rotes Kontrollkästchen steht für einen permanent deaktivierten Job, ein grünes für einen permanent aktivierten Job.

LauynchControl

LCC
quelle
-1

Dank der Informationen von chiggsy konnten wir ein Problem in Mountain Lion beheben, bei dem org.apache.httpd als nicht in "launchctl list" ausgeführt angezeigt wurde, aber de facto nach dem Neustart ausgeführt wurde, sodass MacPorts httpd nicht ausgeführt werden konnte richtig. Die overrides.plist-Datei wurde bearbeitet und org.apache.httpd disabled = true wurde ausgewählt. Muss beim Update von Lion auf Mountain Lion etwas passieren, das com.apache.httpd aktiviert hat.

Atomic
quelle
1
Dienste in /System/Library/LaunchDaemons/werden nur angezeigt, wenn launchctl listsie als root ausgeführt werden. launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plistund /usr/sbin/apachectl stopwürde auch ändern overrides.plist.
Lri