←→ 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:
~/Library/LaunchAgents: kendi aracılarınız. Parola gerekmez./Library/LaunchAgents: tüm kullanıcılar için aracılar. Dosyayı değiştirmek için yönetici parolası gerekir./Library/LaunchDaemons: root olarak çalışan sistem daemon'ları.sudogerekir.
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
ProgramArgumentsveyaProgram: ne çalıştırdığı. Yol tanıdığınız bir uygulamayı mı gösteriyor? O uygulama hâlâ var mı?RunAtLoad: her girişte başlar.KeepAlive: durduğunda yeniden başlar.StartInterval/StartCalendarInterval: bir zamanlamaya göre çalışır.
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.