←→ Underneath: Background Apps · Tüm Mac rehberleri

Mac'te başlatma aracılarını güvenle devre dışı bırakma

LaunchAgents klasöründen bir .plist dosyasını silmek en sık karşılaşılan tavsiyedir. Aynı zamanda en kötü yoldur: iş siz yeniden başlatana kadar çalışmaya devam eder ve bunu geri alamazsınız. Güvenli ve geri alınabilir yol şöyledir.

Kısa yanıt: işin etiketini bulun, ardından şunu çalıştırın:

launchctl bootout gui/$(id -u)/com.example.label
launchctl disable gui/$(id -u)/com.example.label

İlk komut işi hemen durdurur. İkincisi yeniden başlatmalardan sonra da kapalı tutar. launchctl enable bunu geri alır.

Başlamadan önce: /System/Library içindeki hiçbir şeye ve com.apple. ile başlayan hiçbir etikete dokunmayın. Bunlar macOS'a aittir. Aracı kaldırmıyorsanız VPN, yedekleme, güvenlik ve sürücü araçlarını olduğu gibi bırakın.

Adım 1: İşi bulun

Başlatma aracıları (launch agents) ve daemon'lar, değiştirebileceğiniz üç klasörde bulunur:

Apple'ın kendi işleri hariç, şu anda yüklü olanları listeleyin:

launchctl list | grep -v com.apple

Sütunlar sırasıyla işlem kimliği (çalışmıyorsa -), son çıkış durumu ve etikettir (label). Size gereken etikettir.

Adım 2: Ne yaptığını denetleyin

plutil -p ~/Library/LaunchAgents/com.example.label.plist

Program yolu sildiğiniz bir uygulamayı gösteriyorsa iş geride kalmış bir artıktır ve kaldırılması güvenlidir. Bir güncelleyiciyse onu devre dışı bırakmak uygulamanın kendiliğinden güncellenmeyeceği anlamına gelir.

Adım 3: Yedekleyin

mkdir -p ~/LaunchAgents-backup
cp ~/Library/LaunchAgents/com.example.label.plist ~/LaunchAgents-backup/

Adım 4: Hemen durdurun

Bir aracı için (iki LaunchAgents klasöründen herhangi birinde):

launchctl bootout gui/$(id -u)/com.example.label

/Library/LaunchDaemons içindeki bir daemon için:

sudo launchctl bootout system/com.example.label

Bu, işi kaldırır ve işlemini sonlandırır. Yeniden başlatmadan sonra bu etki sürmez (iş RunAtLoad içeriyorsa).

Adım 5: Kapalı tutun

Birini seçin.

Seçenek A: launchctl disable (önerilir)

launchctl disable gui/$(id -u)/com.example.label

Bir daemon için: sudo launchctl disable system/com.example.label.

macOS etiketi kendi devre dışı listesinde saklar; böylece uygulama plist dosyasını yeniden yazsa bile iş kapalı kalır. Listeyi şununla denetleyin:

launchctl print-disabled gui/$(id -u)

Seçenek B: plist dosyasını başka yere taşıyın

mkdir -p ~/Library/LaunchAgents/Disabled
mv ~/Library/LaunchAgents/com.example.label.plist ~/Library/LaunchAgents/Disabled/

launchd yalnızca doğrudan LaunchAgents klasöründeki dosyaları okur, alt klasörlerdekileri okumaz; bu yüzden iş sonraki girişte yüklenmez. Dosya, ihtiyaç duyarsanız orada durur. Uygulama plist dosyasını yeniden oluşturursa iş geri gelir; Seçenek A bunu önler.

Seçenek C: Sistem Ayarları

Pek çok iş Sistem Ayarları › Genel › Giriş Öğeleri ve Uzantılar › Arka Planda İzin Ver bölümünde de görünür. Oradaki anahtarı kapatmak da işe yarar, ancak tek bir anahtar aynı geliştiricinin birkaç işini kapsayabilir. Bkz. “Arka Planda İzin Ver” ne anlama gelir.

Adım 6: İşe yaradığını denetleyin

launchctl list | grep com.example.label

Çıktı yoksa iş yüklü değildir. Emin olmak için yeniden başlatın ve komutu tekrar çalıştırın.

Geri alma

Seçenek A'yı kullandıysanız:

launchctl enable gui/$(id -u)/com.example.label
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.example.label.plist

Seçenek B'yi kullandıysanız dosyayı geri taşıyın ve aynı bootstrap satırını çalıştırın. Daemon'lar için gui/$(id -u) yerine sudo ve system kullanın.

İnternette göreceğiniz eski komutlar

launchctl unload -w file.plist ve launchctl load -w file.plist hâlâ çalışır, ancak Apple bunları eski (legacy) olarak nitelendirir. Güncel olanlar bootout, bootstrap, disable ve enable komutlarıdır ve daha anlaşılır hatalar verirler.

SSS

LaunchAgents içindeki dosyaları silmek güvenli mi?

Devre dışı bırakmak silmekten daha güvenlidir. Bir plist dosyasını silmek zaten yüklenmiş bir işi durdurmaz ve dosyaya yeniden ihtiyaç duyarsanız onu kaybetmiş olursunuz. launchctl bootout ve launchctl disable kullanın ya da dosyayı bir yedek klasörüne taşıyın.

launchctl unload -w kullanmalı mıyım?

Hâlâ çalışıyor ama Apple load ve unload komutlarını eski (legacy) olarak işaretliyor. Güncel macOS'ta bir işi durdurmak için launchctl bootout, kapalı tutmak için launchctl disable kullanın.

/System/Library içindeki Apple başlatma aracılarını devre dışı bırakabilir miyim?

Bırakmayın. Bunlar macOS'un parçasıdır, dosyaları Sistem Bütünlüğü Koruması korur ve onları devre dışı bırakmak iCloud, Spotlight veya güncellemeler gibi özellikleri bozabilir.

launchctl disable işlemini nasıl geri alırım?

launchctl enable gui/$(id -u)/<label> komutunu, ardından plist yoluyla birlikte launchctl bootstrap gui/$(id -u) komutunu çalıştırın ya da çıkış yapıp yeniden giriş yapın.

Uygulama başlatma aracısını geri koydu. Şimdi ne olacak?

launchctl disable kullanın. Bu komut etiketi devre dışı bırakır; böylece uygulama plist dosyasını yeniden yazsa bile iş kapalı kalır. Uygulamanın kendi “Girişte başlat” ayarını da kapatın.