Wie verwende ich nicht-"legacy" launchctl-Befehle zum Laden und Entladen von Plists?

Ich habe einige Plist-Dateien in ~/Library/LaunchAgents.

launchctl load -wIch benutze und launchctl unload -wschalte diese seit Jahren gerne ein und aus. Allerdings merke ich das jetzt loadund werde unloadin den Abschnitt "Legacy" der Manpage verbannt. Nennen wir einen von ihnen com.example.service.plist.

Wenn ich jedoch versuche, mit diesen plists über launchctl enable "gui/$(id -u)/com.example.service"und zu interagieren, scheinenlaunchctl disable "gui/$(id -u)/com.example.service" andere launchd-Befehle Erfolg zu melden – zeigt mir zum Beispiel vollständig deaktivierte Flags, die dem von mir festgelegten Zustand entsprechen – die Dienste starten und stoppen nicht wirklich oder ihre Ports abhören und abhören.launchctl print "gui/$(id -u)"

Gibt es einen Schritt, den ich vermisse? Im Moment bleibe ich bei loadund unloadaber ich würde gerne die nicht veraltete Art und Weise lernen, mit diesem Zeug zu interagieren, bevor Apple schließlich die Tür auf dem alten/schlechten Weg zuschlägt ...

Das Vermächtnis bedeutet, dass eine Änderung im Gange ist - Sie können am 10.11 und niedriger immer noch nach Herzenslust laden und entladen. Meine Vermutung ist, dass Apple dieses Jahr eine Dokumentation auf der WWDC und einen Zeitplan für die Migration haben wird ...
Ich denke, es gibt vielleicht noch keine Antwort darauf, aber es sieht sicher so aus enableund disablesoll und loadersetzen unload. Ich kann sie einfach nicht dazu bringen, so zu arbeiten, wie ich es erwarte.
Haben Sie versucht, launchctl enablemit zu folgen launchctl kickstart?
Habe ich nicht, launchctl kickstartsoll aber nicht einfach eine Freischaltung für den betreffenden Job ausstellen? Ich verwende launchd speziell, weil ich eine reine On-Demand-Aktivierung möchte.
Das sieht so aus, als könnte es helfen: babodee.wordpress.com/2016/04/09/launchctl-2-0-syntax

Antworten (2)

Ich habe den Twitter-Nutzer @launchderp gefragt :

@launchderp Sind launchctl loadund entladen Sie noch sicher, zumindest bis 10.12 oder was auch immer als nächstes kommt?

cf Wie verwende ich nicht-"legacy" launchctl-Befehle zum Laden und Entladen von Plists?

Und @launchderp antwortete

@tjluoma Ja, sie sind immer noch sicher. Zu viele Jahre Abhängigkeiten, um sie zu brechen.

Obwohl dies nicht wie eine offizielle Aussage von Apple erscheinen mag, glaube ich, dass diese Person jemand ist, der aktiv launchdfür Apple arbeitet, und vertraue dem, was sie sagt. YMMV.

Moral der Geschichte: Wenn das Laden/Entladen für Sie funktioniert, verwenden Sie sie weiter :-)

Nicht als "akzeptiert" markieren, weil es die Frage nicht ganz beantwortet, enableaber disablepositiv bewertet, weil ich die Informationen immer noch schätze :).
Ich habe eine Folgefrage gestellt, weil das Laden/Entladen bei mir nicht mehr funktioniert und ich nicht weiß warum: twitter.com/heathborders/status/1480954665680269320

Der von TJ Luoma erwähnte Artikel ist sehr hilfreich. Schritte für Launch Daemon:

  1. Speichern Sie Ihre Plist-Datei /Library/LaunchDaemons/wie gewohnt in. Nehmen wir an, die Datei ist com.example.mysrv.plist, und das Label in plist ist com.example.mysrv.
  2. sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.mysrv.plist. Beachten Sie, dass der Pfad relativ (zu $PWD) oder absolut sein kann.
  3. Überprüfen Sie den Dienst mit sudo launchctl print system/com.example.mysrv. Es sollte "laufen" heißen.

Launch Agents sollten ähnlich sein. Vorbehalt: Ich habe keine Ahnung, wie man einen Dienst anhält, ohne ihn durch zu entladen bootout.