Bagaimana cara memeriksa apakah tanda OS X "dinonaktifkan" untuk layanan launchd diatur?

8

Menurut halaman manual untuk launchctl(penekanan pada saya):

   -w Mengganti kunci Dinonaktifkan dan menetapkannya ke false. Dalam versi sebelumnya, opsi ini akan memodifikasi file konfigurasi. Sekarang status tombol Dinonaktifkan disimpan di tempat lain di dalam disk.

Karena keadaan saat ini dari bendera yang dinonaktifkan tidak lagi diatur dalam .plistfile itu sendiri, memeriksa Disabledkunci tidak lagi merupakan cara yang akurat untuk mengetahui apakah layanan akan berjalan pada boot berikutnya.

Di mana ini "di tempat lain di-disk"? Lebih penting lagi (dan lebih penting), bagaimana cara memeriksa apakah flag ini disetel?

Juga, apakah mungkin untuk mengatur layanan agar berjalan pada boot berikutnya tanpa memaksanya untuk segera mulai (seperti halnya dengan launchctl load -w /Library/LaunchDaemons/my-service.plist)?

Charles Duffy
sumber

Jawaban:

8

Disable sekarang (per 10.6.x) disimpan di /private/var/db/launchd.db/com.apple.launchd/overrides.plist, sebagai entri seperti:

<key>com.apple.AppleFileServer</key>
<dict>
    <key>Disabled</key>
    <true/>
</dict>

Anda dapat mem-parsing file ini untuk melihat item launchd mana yang ditimpa, tetapi file tersebut diatur ke akses root saja ("-rw ------- 1 roda root"), dan tidak ada jaminan bahwa Apple tidak akan mengubah cara barang disimpan lagi di 10.7 ...

Juga, saya tidak tahu cara untuk mengaktifkan item launchd yang ada untuk memuat pada boot berikutnya tanpa juga memuatnya segera. (Jika item baru, tidak ada masalah: pastikan Disabled = false di dalamnya, dan masukkan ke / Library / LaunchDaemons.)

Gordon Davisson
sumber
2
sepertinya pindah pada 10.11 :( ada ide untuk jawaban yang diperbarui pada 10.11?
Peter Lapisu
0

Untuk versi baru macOS, launchctl sintaks dan perintah telah berubah .

Berikut ini diuji pada macOS High Sierra ( 10.13.4):

launchctl print user/$(id -u)
# For GUI domain (effectively "flat" with login domain)
# See man launchctl for details
launchctl print gui/$(id -u)

Anda dapat melihat banyak properti layanan pada sistem yang dilampirkan ke pengguna Anda dengan varian launchctl printdan launchctl listperintah. Misalnya, untuk melihat status bendera yang dinonaktifkan, cari bagian seperti ini:

disabled services = {
{
    "com.apple.macbuddy.icloudsetup.user" => false
    "com.apple.ManagedClientAgent.enrollagent" => true
    "com.apple.FileStatsAgent" => false
    "com.apple.FolderActionsDispatcher" => true
    "homebrew.mxcl.postgresql" => false
    "com.apple.appleseed.seedusaged.postinstall" => true
    "homebrew.mxcl.mysql" => false
}
TrinitronX
sumber
ada jugalaunchctl print system/{service-name}
wisbucky