Come utilizzare i comandi launchctl non "legacy" per caricare e scaricare i plists?

13

Ho alcuni file plist in ~/Library/LaunchAgents .

Utilizzo felicemente launchctl load -w e launchctl unload -w per attivarli e disattivarli per anni. Tuttavia, noto che ora load e unload sono relegati nella sezione "legacy" della pagina man. Chiamiamo uno di loro com.example.service.plist .

Tuttavia, quando provo a interagire con questi plists tramite launchctl enable "gui/$(id -u)/com.example.service" e launchctl disable "gui/$(id -u)/com.example.service" , altri comandi di launchd sembrano per segnalare il successo - ad esempio, launchctl print "gui/$(id -u)" mostra totalmente i flag disabilitati che corrispondono allo stato che ho impostato - i servizi in realtà non iniziano e non si fermano o non ascoltano e non ascoltano sulle loro porte.

C'è qualche passaggio che mi manca? Per il momento mi sto attaccando con load e unload , ma mi piacerebbe imparare il modo non deprecato di interagire con questa roba prima che Apple alla fine sbatta la porta sul vecchio / cattivo modo ...

    
posta Glyph 04.02.2016 - 21:02
fonte

2 risposte

6

Ho chiesto all'utente Twitter @launchderp :

@launchderp Arelaunchctl load and unload still safe to use, at least until 10.12 or whatever comes next?

c.f How do I use non-"legacy" launchctl commands to load and unload plists?

E @launchderp ha risposto

@tjluoma Yeah they're still safe. Too many years of dependencies to break them.

Anche se questo potrebbe non sembrare una dichiarazione ufficiale di Apple, credo che questa persona sia qualcuno che sta lavorando attivamente su launchd per Apple e si fida di ciò che dice. YMMV.

Morale della trama: se carico / scarica funziona per te, continua a utilizzarli: -)

    
risposta data 14.04.2016 - 18:45
fonte
1

L'articolo riferito da TJ Luoma è molto utile. Passi per Launch Daemon:

  1. Salva il tuo file plist in /Library/LaunchDaemons/ come al solito. Diciamo che il file è com.example.mysrv.plist , e l'etichetta in plist è com.example.mysrv .
  2. %codice%. Nota che il percorso può essere relativo (a sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.mysrv.plist ) o assoluto.
  3. Controlla il servizio con $PWD . Dovrebbe dire "in esecuzione".

Gli agenti di lancio dovrebbero essere simili. Avvertenza: non ho idea di come interrompere un servizio senza scaricarlo tramite sudo launchctl print system/com.example.mysrv .

    
risposta data 17.12.2018 - 23:20
fonte

Leggi altre domande sui tag