Cara Menggunakan LaunchAgents dan LaunchDaemons di macOS: Panduan Lengkap

Pembaharuan Terakhir: 22/09/2025
penulis: Isaac
  • LaunchAgents bergantung pada LaunchDaemon pengguna dan sistem; keduanya dikelola oleh file launchd dan .plist di jalur tertentu.
  • macOS 13+ memperkenalkan SMAppService, notifikasi, dan profil XML untuk menyetujui item secara transparan di latar belakang.
  • Diagnosis dengan sfltool, launchctl dan log dari backgroundtaskmanagement; periksa item di Pengaturan Sistem.
  • Terapkan izin yang benar, gunakan KeepAlive dengan SuccessfulExit/NetworkState, dan hindari menyentuh /System/Library untuk stabilitas maksimum.

Panduan untuk LaunchAgents dan LaunchDaemons di macOS

Di macOS, banyak keajaiban terjadi di balik layar berkat layanan yang dimulai tanpa Anda sadari, dan pemasangan Agen Peluncur/Daemon Peluncuran adalah inti dari otomatisasi itu. Jika Anda pernah bertanya-tanya bagaimana cara membuat naskah boot sendirian, menjaga aplikasi penting tetap berjalan, atau mengaudit aplikasi apa yang dimuat, inilah panduan praktis yang Anda cari.

dari MacOS 13Apple mengubah aturan permainan dengan struktur baru dalam paket apps dan kerangka kerja Layanan Aplikasi SMA, yang memberikan lebih banyak transparansi kepada pengguna dan manajemen elemen login yang konsisten, agen peluncuran y meluncurkan daemonSelain itu, terdapat peningkatan bagi administrator dengan profil konfigurasi dan alat diagnostik yang sebaiknya dikuasai.

Program yang dijalankan saat startup
Artikel terkait:
Program yang Dijalankan Saat Startup. Yang Mana Yang Harus Dihapus Dan Bagaimana Cara Melakukannya

Apa itu launchd, LaunchAgents dan LaunchDaemons

Proses peluncuran Proses ini dimulai tepat setelah kernel (salah satu yang pertama dimulai, biasanya dengan PID 1) dan berfungsi untuk meluncurkan, mengontrol, dan memantau layanan lainnya. Biasanya, proses ini hanya mengonsumsi sedikit sumber daya, tetapi jika suatu hari Anda melihatnya berjalan tinggi di Activity Monitor, biasanya proses ini akan kembali normal setelah dimulai ulang.

Los PeluncuranDaemon Mereka dieksekusi saat sistem dimulai dan melakukannya dalam konteks akar; mereka tidak bergantung pada siapa pun yang masuk dan tidak dapat berinteraksi dengan antarmuka grafis. Mereka sempurna untuk tugas sistem, proses persisten, dan layanan yang perlu tersedia bahkan saat pengguna tidak masuk.

Los Agen Peluncuran Mereka dimuat ketika pengguna tertentu masuk dan dapat berinteraksi dengan antarmuka (bilah menu, notifikasi, jendela, dll.). Mereka ideal untuk utilitas pengguna, panduan aplikasi dan proses yang memerlukan login.

Dalam kedua kasus, konfigurasinya berada dalam file Plist dengan kunci dan nilai yang menunjukkan apa yang harus dijalankan, kapan, dan bagaimana. File .plist ini dikelola oleh launchd dan berada di lokasi tertentu di sistem, jadi mengetahui ke mana mereka pergi, dengan izin apa, dan bagaimana cara memuatnya sangatlah penting.

Struktur dan lokasi file .plist

macOS mengatur file .plist sebagai berikut: di tingkat sistem di /Sistem/Perpustakaan/AgenPeluncuran y /Sistem/Perpustakaan/LaunchDaemons, secara global di / Library / LaunchAgents y / Library / LaunchDaemons, dan di tingkat pengguna di ~ / Library / LaunchAgentsAturan yang sehat adalah menginstal sendiri di /Library atau di ~/Library, dan Jangan sentuh pohon /Sistem/Perpustakaan.

File .plist adalah file XML dengan kunci seperti label (pengidentifikasi layanan), program o Argumen Program (apa yang harus dijalankan), JalankanSaatMuat (mulai segera setelah dimuat) atau Berusaha agar hidup (kebijakan coba lagi/langsung). Anda dapat melihatnya dengan editor teks, tetapi editlah dengan cermat dan selalu pahami fungsi setiap tombol.

Agar launchd menerima .plist, kepemilikan dan izin harus dihormati. Sebagai administrator: sudo chown root:wheel /Library/LaunchAgents/mi.servicio.plist y sudo chmod 644 /Library/LaunchAgents/mi.servicio.plistPengaturan ini memastikan bahwa akar bisa menulis, kelompok roda dan orang lain dapat membacanya, dan launchd mempercayai berkas tersebut.

Setelah diinstal, itu dimuat dengan sudo launchctl load -w /Library/LaunchAgents/mi.servicio.plist atau padanannya di /Library/LaunchDaemonsUntuk menghapusnya, Anda dapat menggunakan launchctl remove com.ejemplo.mi-servicio (dimana label sesuai dengan nilai label).

  Ingatan Tidak Cukup untuk Membuka Halaman Web Ini di Google Chrome

Fitur baru sejak macOS 13: SMAppService dan transparansi pengguna

Apple memperkenalkan struktur bundel aplikasi yang menyimpan eksekusi pembantu di dalam aplikasi itu sendiri dan mengelolanya dengan Layanan Aplikasi SMAIni memungkinkan perekaman dan pemantauan elemen login, agen peluncuran, dan daemon peluncuran sebagai executable tambahan, tanpa menyebarkannya ke seluruh sistem dan dengan visibilitas yang lebih besar bagi pengguna.

Saat item ini diterapkan melalui MDM atau penginstal, macOS 13+ menampilkan pemberitahuan instalasi item terkelola untuk melaporkan dan mengizinkan peninjauan di Pengaturan Sistem. Kecocokan pertama dengan suatu aturan akan menghasilkan notifikasi; kecocokan berikutnya di hari yang sama tidak lagi menghasilkan notifikasi berulang.

Jika pengguna menunda Setelah notifikasi, macOS akan menonaktifkan notifikasi jenis ini lebih lanjut selama periode yang dipilih (1 hari atau 1 minggu). Selama notifikasi muncul, tidak ada penginstalan lebih lanjut yang muncul; jika Anda menutupnya, penginstalan selanjutnya akan melanjutkan notifikasi. Kebijakan ini mengurangi gangguan sekaligus memberikan kontrol.

Visibilitas dan diagnostik: semua yang perlu Anda periksa

Untuk melihat apa yang sedang direkam dengan bingkai baru, buka Pengaturan Sistem > Umum > Item StartupDi sana Anda akan melihat elemen login dan latar belakang; tombol informasi menunjukkan eksekusi yang sedang diluncurkan dan detail terkait.

On line perintah, Anda memiliki beberapa kegunaan. Dengan launchctl list Anda mendapatkan semua layanan yang berjalan. Untuk kerangka kerja tugas latar belakang, gunakan sfltool dumpbtm dan memeriksa status saat ini (termasuk UUID dari muatan servicemanagement). Jika Anda perlu membersihkan status antar pengujian, jalankan sfltool resetbtm dan, untuk kebersihan, restart el Mac sebelum mencoba lagi.

Untuk log waktu nyata, filter aktif Konsol dengan subsistem dan kategori yang sesuai, atau luncurkan di terminal: log stream --debug --info --predicate "subsystem == 'com.apple.backgroundtaskmanagement' AND category == 'mcx'"Dengan ini, Anda akan melihat jejak berguna dari penambahan, penghapusan, dan pengelolaan item.

Jika Anda memiliki akses ke AppleSeed untuk TI, alat tersebut Utilitas Evaluasi Mac 4.3.0+ menghasilkan laporan terperinci sesuai dengan apa yang ditampilkannya sfltool dumpbtm, dan memungkinkan pengeksporan hasil yang dibatasi untuk analisis lebih lanjut atau korelasi dengan inventaris.

Profil XML untuk mengelola tugas latar belakang

Organisasi dapat secara otomatis menyetujui item latar belakang menggunakan Profil konfigurasi XMLKonten adalah serangkaian aturan (kamus); ketika suatu elemen cocok, elemen tersebut disetujui. Ada beberapa jenis pencocokan yang patut dikuasai.

  • Pengenal Bundel (ID Bundel) dengan kecocokan tepat untuk aplikasi tertentu.
  • AwalanPengidentifikasiBundel untuk mengotorisasi keluarga aplikasi di bawah awalan.
  • Pengenal Tim dari pengembang (penandatanganan kode) dengan kecocokan yang tepat.
  • label dari layanan (kunci Label dari launchd .plist) dengan kecocokan yang tepat.
  • LabelAwalan untuk menyetujui tag yang dimulai dengan pola tertentu.

Dengan pendekatan ini, administrator memastikan bahwa elemen yang sah diaktifkan tanpa gesekan, semuanya dengan ketertelusuran dan mematuhi kebijakan perusahaan. Jika Anda mengelola armada, ini akan menghemat dukungan dan mencegah waktu henti yang tidak perlu.

Keamanan, malware, dan kekuatan sistem

Banyak installer menambahkan file .plist yang terlupakan ketika aplikasi asli dihapus. Residu ini dapat memulai kembali proses yang Anda pikir telah dihapus. Selain itu, malware menyalahgunakan LaunchAgents untuk bertahan, mengumpulkan data, dan berkomunikasi dengan server jarak jauh.

  Windows Hello: Panduan Lengkap untuk Pengaturan Wajah, Sidik Jari, dan PIN

Apple memelihara berkas atribusi dengan biner pembantu umum yang membantu mengidentifikasi siapa saja: /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/attributions.plistKonsultasi dapat memberi Anda petunjuk untuk untuk menetapkan yang dapat dieksekusi ke aplikasi induknya dalam analisis forensik atau pembersihan.

Sebagai lapisan pengawasan "buatan tangan", Anda dapat mengaktifkan Tindakan folder pada rute sensitif: /Library/LaunchAgents, /Library/LaunchDaemons, /System/Library/LaunchAgents, /System/Library/LaunchDaemons y ~/Library/LaunchAgentsDengan cara ini, Anda akan diberi tahu saat file .plist baru muncul, sehingga Anda dapat memeriksanya dengan cepat.

Membuat LaunchAgents dan LaunchDaemons Anda sendiri

Ide dasarnya sederhana: tulis .plist dengan label (misalnya., com.ejemplo.miscript), mendefinisikan program o Argumen Program dengan jalur yang tepat dari eksekusi/skrip, atur kunci seperti JalankanSaatMuat dan, jika berlaku, Berusaha agar hidup, dan letakkan di folder yang sesuai.

Jika tugas harus dijalankan sebelum login dan tanpa UI, letakkan di /Library/LaunchDaemonsJika Anda bergantung pada pengguna dan/atau berinteraksi dengan antarmuka, gunakan /Library/LaunchAgents o ~/Library/LaunchAgents (hanya untuk pengguna tersebut). Ingat untuk menerapkan properti dan izin perbaiki sebelum memuat.

Untuk mengaktifkan secara instan: sudo launchctl load -w /Library/LaunchDaemons/com.ejemplo.miscript.plistUntuk berhenti dan mengunduh: sudo launchctl unload -w /Library/LaunchDaemons/com.ejemplo.miscript.plist o launchctl remove com.ejemplo.miscriptPastikan bahwa jalur menuju biner ada dan dapat dieksekusi.

Saran praktis: selalu uji terlebih dahulu ~ / Library / LaunchAgents dengan pengguna Anda, periksa log dan perilaku, lalu baru promosikan ke /Library. Hindari modifikasi /System/Library/…; selain menjadi praktik yang buruk, sistem yang dilindungi (SIP) mencegahnya karena alasan keamanan.

Kebijakan KeepAlive dan kasus penggunaan di dunia nyata

Jika Anda membutuhkan proses untuk selalu berada di atas, kuncinya Berusaha agar hidup memungkinkan Anda untuk lebih detail. Anda dapat menempatkan <true/> untuk percobaan ulang tanpa syarat atau gunakan kamus dengan kondisi untuk kontrol halus.

Pola yang sangat berguna menggabungkan Berusaha agar hidup dengan Keluar BerhasilKetika Anda mendefinisikan SuccessfulExit = false, launchd akan mencoba lagi jika proses keluar dengan kode selain 0 (crash, error), tetapi jika pengguna menutupnya dengan "bersih" (keluar 0), tidak akan meluncurkannya kembali. Dengan cara ini, Anda dapat menghindari kerumitan saat memperbarui aplikasi atau mematikan Mac.

Pendekatan umum lainnya adalah Status Jaringan: jika Anda mengaturnya ke true Di KeepAlive, peluncuran ulang akan memperhatikan "ketersediaan jaringan" (perangkat memiliki alamat IP). Catatan: keberadaan jaringan tidak selalu berarti akses internet; launchd hanya memeriksa konektivitas dasar, bukan memastikan ISP Anda merespons.

Jika Anda berencana untuk menjaga agar aplikasi antarmuka tetap aktif (misalnya, utilitas bilah menu), buatlah Agen Peluncur dengan paket binernya yang sebenarnya: misalnya, /Applications/MiApp.app/Contents/MacOS/MiAppHindari jalur ke alias atau aplikasi "ikonik" dan arahkan ke file yang dapat dieksekusi di dalam paket.

Di lingkungan tanpa pengawasan (kios, layar informasi, server dengan sesi persisten), kebijakan ini dapat membuat perbedaan bagi alat Anda jangan jatuh dan jika mereka melakukannya, mereka berdiri sendiri tanpa campur tangan manusia.

Alternatif dan praktik lama yang harus dihindari

Apel disisihkan cron y Kait Masuk sebagai cara yang direkomendasikan untuk meluncurkan tugas; jalur resminya adalah launchd. Ada juga Item Startup dalam versi lama (folder di Sistem dan Perpustakaan Global), tetapi tidak boleh digunakan untuk implementasi baru saat ini.

Edit pohon sistem secara manual (/System/Library/LaunchDaemons) mungkin berakhir di Mac yang tidak mulaiJangan ambil risiko: jika Anda perlu melakukan booting lebih awal, gunakan /Library/LaunchDaemons dengan konfigurasi dan izin yang tepat, dan biarkan komponen sistem tetap berjalan.

Pemantauan kinerja dan pemecahan masalah

Jika Anda melihat Mac Anda lambat, buka Monitor Aktivitas dan mengurutkan berdasarkan CPU. Biasanya launchd tidak muncul di bagian depan; jika terus-menerus berada di 30-40%, mulai ulang sistem dan periksa lagi. Jika masih ada, daftarkan layanan dengan launchctl list dan menghilangkan tersangka.

  Bagaimana cara mentransfer gambar dari kamera digital ke iPhone atau iPad saya?

Untuk mengaudit item mana yang dicatat dengan kerangka kerja baru, sfltool dumpbtm adalah emas: tangkap pintu keluar Anda dan menyimpannya ke laporan dukungan Anda. Di sela-sela pengujian, sfltool resetbtm Ini memberi Anda awal yang bersih; ingatlah untuk memulai kembali guna menghindari keadaan peralihan.

Log adalah teman Anda: dengan log stream --debug --info --predicate "subsystem == 'com.apple.backgroundtaskmanagement' AND category == 'mcx'" Anda akan mendapatkan detail halus dari titik tertinggi, terendah, dan perubahan. Padukan dengan Konsol penyaringan berdasarkan bidang yang sama jika Anda lebih suka antarmuka grafis.

Mengelola dalam skala besar dengan MDM dan praktik terbaik

Dalam penerapan terkelola, buatlah Profil XML yang menjelaskan aturan persetujuan (berdasarkan ID bundel, awalan, ID Tim, tag, atau awalan label). Dengan demikian, ketika aplikasi mendaftarkan helper-nya, macOS akan otomatis menyetujuinya, dan pengguna akan melihat notifikasi yang terkontrol.

Uji alur standar Anda (instal, tingkatkan, hapus instalan) dan validasi hasilnya dengan Manajemen Perangkat Deklaratif di macOS 14+ (laporan status) dan dengan alat-alat yang disebutkan di atas. Kumpulkan umpan balik dari pengguna dan vendor untuk mengadaptasi aplikasi ke kerangka kerja baru.

Dokumentasikan kebijakan internal: apa yang diotorisasi, kriteria apa yang digunakan, siapa yang meninjaunya, bagaimana auditnya, dan apa yang harus dilakukan jika suatu elemen mulai menghabiskan sumber daya. Dengan kebersihan ini, Anda menghindari kejutan dan meningkatkan keamanan dan stabilitas armada.

Tips pembersihan dan pemantauan berkelanjutan

Jika setelah menghapus sesuatu item tersebut muncul kembali saat startup, cari .plist berdasarkan nama di /Library/LaunchAgents, /Library/LaunchDaemons y ~/Library/LaunchAgents. Hapus file dan unduh layanan dengan launchctl remove menggunakan miliknya label.

Untuk meningkatkan visibilitas Anda, aktifkan ini Tindakan folder Komentar: Setiap kali berkas .plist baru muncul di jalur sensitif, Anda akan menerima notifikasi dan dapat segera melakukan intervensi. Ini langkah sederhana yang akan menghemat waktu Anda.

Perlu diingat bahwa agen bersifat per pengguna dan daemon bersifat seluruh sistem. Pada mesin yang digunakan bersama, Anda mungkin ingin memilih agen di ~/Library/LaunchAgents ayat tidak memengaruhi profil lain, kecuali jika itu merupakan tugas lintas perusahaan.

Jika Anda mengotomatiskan aplikasi agar selalu terbuka, ingatlah bahwa aplikasi tersebut dapat memblokir mematikan atau memulai ulang ketika diluncurkan kembali ketika sistem mencoba untuk dimatikan. Sebelum memperbarui atau memulai ulang, nonaktifkan layanan dengan launchctl remove atau unduh .plist, lalu aktifkan kembali setelahnya.

Terakhir, jangan lupa untuk memeriksa secara berkala Pengaturan Sistem > Umum > Item Startup dan bagian item latar belakang. Ini adalah cara tercepat untuk mendeteksi "penumpang gelap" yang menyelinap masuk melalui instalasi yang ceroboh.

Mendominasi LaunchAgents dan LaunchDaemons Ini memberi Anda kendali: Anda tahu apa yang dimulai, kapan, dan mengapa; Anda dapat menyetujui tindakan yang sah dengan profil, mendiagnosis dengan sfltool dan log, serta memperkuat keamanan berkat transparansi yang disediakan oleh SMAppService di macOS 13+. Dengan beberapa aturan yang jelas (jalur yang benar, izin, label yang konsisten, dan penggunaan KeepAlive yang tepat), Anda akan memiliki layanan yang stabil, pengguna yang terinformasi, dan sistem yang lebih terprediksi, tanpa harus berkutat dengan metode yang ketinggalan zaman.