Was genau sind diese "Domain-" und "Service-Ziele" und wie ordne ich sie Plisten zu, die von launchd verwendet werden?
OS X 10.10 führt eine neue launchctl
API zum Verwalten von LaunchDaemons und Starten von Plists ein. Protokollnachrichten und Manpages empfehlen, Schlüssel wie KeepAlive
und RunAtLoad
nicht mehr zu verwenden und Unterbefehle zu verwenden enable
. bootstrap
; und kickstart
sollten vor load -w
und verwendet werdenunload -w
Aus den Manpages geht jedoch nicht hervor, wie eine Plist mit der "Domäne" und dem "Dienstziel" verknüpft werden kann, von denen die Befehle bei vorhandenen Plists, die für OS X 10.9 anscheinend völlig ausreichend waren, nicht verwendet werden können
Zum Beispiel [aktualisiert]: Eine grundlegende Liste, die wir versuchen zu "starten"; scheinbar in "System" -Domäne gebootet, aber anschließend in "System" nicht erkannt
# pwd
/Library/LaunchDaemons
# cat com.iainhouston.django.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.iainhouston.django</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/virtualenvs/django.iainhouston.com/bin/gunicorn</string>
<string>--bind=127.0.0.1:49202</string>
<string>--workers=2</string>
<string>superlists.wsgi:application</string>
</array>
<key>Disabled</key><false/>
</dict>
</plist>
# launchctl bootstrap system com.iainhouston.django.plist
/Library/LaunchDaemons/com.iainhouston.django.plist: Service is disabled
# launchctl enable system/com.iainhouston.django.plist
# launchctl kickstart system/com.iainhouston.django.plist
Could not find service "com.iainhouston.django.plist" in domain for system
Motivation
Die System - Log - Einträge, launchctl -w load ...
beschwert sich, wenn wir verwenden KeepAlive
mit , RunAtLoad
dass dieser Service definiert ist , ständig zu laufen und ist von Natur aus ineffizient. deshalb sind wir motiviert, die neue schnittstelle zu nutzen.
Nicht nur das, wir haben erhebliche Probleme mit übermäßiger Prozessorauslastung, die wir durch die Bereitstellung der entsprechenden On-Demand-Schlüsselwörter kontrollieren möchten. Daher sind wir auch hier motiviert zu verstehen, wie mit dem neuen launchd umgegangen wird. Dies ist mit den Dokumenten nicht einfach wie sie stehen!
RunAtLoad
: "Dieser Schlüssel sollte vermieden werden, da spekulative Jobstarts sich nachteilig auf Systemstart- und Benutzeranmeldeszenarien auswirken." Es gibt jedoch keine Beispieljobtypen oder -vorschläge zur Verwendung. Sehr unbefriedigend.RunAtLoad
undKeepAlive
bleib doch einfach davon abgeraten. Einige Aufgaben erfordern dieses Verhalten, aber Apple möchte, dass Ingenieure den Standardansatz nach Möglichkeit überdenken. Ein Schubser statt eines Absoluten. Vielen Dank, dass Sie den Fehler eingereicht und zur Kenntnis genommen haben.KeepAlive
mitRunAtLoad
"Dieser Dienst ist so definiert, dass er ständig ausgeführt wird und von Natur aus ineffizient ist." deshalb sind wir motiviert, die neue schnittstelle zu nutzen. Nicht nur das, wir haben Probleme mit übermäßiger Prozessorauslastung, die wir durch die Bereitstellung der entsprechenden On-Demand-Schlüsselwörter kontrollieren möchten. Daher sind wir auch hier motiviert zu verstehen, wie mit dem neuen launchd umgegangen wird Sie stehen.Sie sind nah dran, sollten aber nicht den .plist-Teil in den Befehlen enable und kickstart haben. Hier ist ein Code, mit dem wir ihn einer Domäne und einem Dienstziel für einen Benutzer zuordnen. $ UID ist im Grunde Ihre Benutzer-ID.
quelle
unbootstrap
noch nicht implementiert;stop
unddisable
scheinen keine Wirkung zu haben undkill
erkennt wederSIGTERM
nochSIGKILL
....