Bagaimana cara menggunakan perintah launchctl non-"legacy" untuk memuat dan membongkar daftar?

13

Saya punya beberapa file plist di ~/Library/LaunchAgents.

Saya telah dengan senang hati menggunakan launchctl load -wdan launchctl unload -wmenghidupkan dan mematikan ini selama bertahun-tahun. Namun, saya perhatikan bahwa sekarang loaddan unloadditurunkan ke bagian "warisan" dari halaman manual. Sebut saja salah satunya com.example.service.plist.

Namun, ketika saya mencoba untuk berinteraksi dengan daftar ini melalui launchctl enable "gui/$(id -u)/com.example.service"dan launchctl disable "gui/$(id -u)/com.example.service", perintah launchd lainnya tampaknya melaporkan keberhasilan - misalnya, launchctl print "gui/$(id -u)"benar-benar menunjukkan kepada saya bendera yang dinonaktifkan yang sesuai dengan keadaan yang telah saya tetapkan - layanan tidak benar-benar mulai dan berhenti atau dengarkan dan jangan terdaftar di porta mereka.

Apakah ada beberapa langkah yang saya lewatkan? Untuk saat ini saya bertahan loaddan unloadtetapi saya ingin mempelajari cara berinteraksi yang tidak terputus-putus dengan hal-hal ini sebelum Apple akhirnya membanting pintu dengan cara lama / buruk ...

Mesin terbang
sumber
Warisan berarti bahwa suatu perubahan sedang terjadi - Anda masih dapat menggunakan memuat dan menurunkan ke konten hati Anda pada 10.11 dan lebih rendah. Asumsi saya adalah Apple akan memiliki dokumentasi di WWDC tahun ini dan jadwal untuk migrasi ...
bmike
1
Saya kira ada hanya mungkin tidak menjadi jawaban untuk ini, tapi itu pasti terlihat seperti enabledan disabledimaksudkan untuk menggantikan loaddan unload. Saya tidak bisa membuat mereka bekerja seperti yang saya harapkan.
Glyph
1
Apakah Anda mencoba mengikuti launchctl enabledengan launchctl kickstart?
Saya belum, tetapi tidak launchctl kickstartseharusnya hanya mengeluarkan aktivasi untuk pekerjaan yang dimaksud? Saya menggunakan launchd khusus karena saya ingin aktivasi murni berdasarkan permintaan.
Glyph
2
Ini sepertinya membantu: babodee.wordpress.com/2016/04/09/launchctl-2-0-syntax
TJ Luoma

Jawaban:

6

Saya bertanya kepada pengguna Twitter @launchderp :

@launchderp Apakah launchctl loaddan bongkar masih aman untuk digunakan, setidaknya sampai jam 10.12 atau apa pun yang terjadi selanjutnya?

cf Bagaimana cara menggunakan perintah launchctl non-"legacy" untuk memuat dan membongkar daftar?

Dan @launchderp menjawab

@ tjluoma Ya mereka masih aman. Terlalu bertahun-tahun ketergantungan untuk menghancurkan mereka.

Meskipun ini mungkin tidak tampak seperti pernyataan resmi Apple, saya percaya orang ini adalah seseorang yang secara aktif bekerja launchduntuk Apple, dan percaya pada apa yang mereka katakan. YMMV.

Moral cerita: Jika memuat / membongkar bekerja untuk Anda, tetap gunakan :-)

TJ Luoma
sumber
2
Tidak menandai sebagai "diterima" karena tidak cukup menjawab pertanyaan tentang enabledan disabletetapi terangkat karena saya masih menghargai informasi :).
Glyph
1

Artikel yang dirujuk oleh TJ Luoma sangat membantu. Langkah-langkah untuk Meluncurkan Daemon:

  1. Simpan file plist Anda /Library/LaunchDaemons/seperti biasa. Katakanlah file itu com.example.mysrv.plist, dan Label dalam daftar adalah com.example.mysrv.
  2. sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.mysrv.plist. Perhatikan bahwa jalur bisa relatif (ke $PWD) atau absolut.
  3. Periksa layanan dengan sudo launchctl print system/com.example.mysrv. Itu harus mengatakan "berjalan".

Peluncuran Agen harus serupa. Peringatan: Saya tidak tahu bagaimana cara menghentikan layanan tanpa menurunkannya bootout.

Franklin Yu
sumber