Ich habe einige plist-Dateien in ~/Library/LaunchAgents
.
Ich benutze launchctl load -w
und launchctl unload -w
schalte diese seit Jahren gerne ein und aus. Allerdings merke ich das jetzt load
und unload
steige in den "Legacy" -Bereich der Manpage ab. Nennen wir einen von ihnen com.example.service.plist
.
Wenn ich jedoch versuche, über launchctl enable "gui/$(id -u)/com.example.service"
und mit diesen Plists zu interagieren launchctl disable "gui/$(id -u)/com.example.service"
, scheinen andere launchd-Befehle den Erfolg zu melden - launchctl print "gui/$(id -u)"
zeigt mir beispielsweise vollständig deaktivierte Flags an, die dem von mir festgelegten Status entsprechen -, werden die Dienste tatsächlich nicht gestartet und gestoppt oder hören und unlisten auf ihren Häfen.
Gibt es einen Schritt, den ich vermisse? Im Moment bleibe ich bei load
und unload
möchte aber die nicht veraltete Art des Umgangs mit diesem Zeug lernen, bevor Apple irgendwann die Tür auf die alte / schlechte Art zuschlägt ...
enable
unddisable
soll ersetzenload
undunload
. Ich kann sie einfach nicht zum Arbeiten bringen, wie ich es erwarte.launchctl enable
mitlaunchctl kickstart
?launchctl kickstart
nur eine Aktivierung für den betreffenden Job ausstellen? Ich verwende launchd speziell, weil ich die Aktivierung nur bei Bedarf möchte.Antworten:
Ich habe den Twitter-Benutzer @launchderp gefragt :
Und @launchderp antwortete
Obwohl dies nicht wie eine offizielle Äußerung von Apple erscheint, glaube ich, dass diese Person jemand ist, der aktiv an
launchd
Apple arbeitet und dem vertraut, was sie sagt. YMMV.Moral der Geschichte: Wenn das Laden / Entladen für dich funktioniert, benutze sie weiter :-)
quelle
enable
unddisable
aber positiv bewertet, weil ich die Informationen immer noch schätze :).Der Artikel von TJ Luoma ist sehr hilfreich. Schritte zum Starten des Daemons:
/Library/LaunchDaemons/
wie gewohnt. Nehmen wir an, die Datei istcom.example.mysrv.plist
und das Label in plist istcom.example.mysrv
.sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.mysrv.plist
. Beachten Sie, dass der Pfad relativ (zu$PWD
) oder absolut sein kann.sudo launchctl print system/com.example.mysrv
. Es sollte "Laufen" heißen.Launch Agents sollten ähnlich sein. Einschränkung: Ich habe keine Ahnung, wie ein Dienst angehalten werden kann, ohne ihn zu entladen
bootout
.quelle