←→ Underneath: Background Apps · Alle Mac-handleidingen
Zo schakel je launch agents op een Mac veilig uit
Een .plist uit LaunchAgents verwijderen is het advies dat je het vaakst ziet. Het is ook de slechtste manier: de taak blijft draaien tot je herstart, en je kunt het niet terugdraaien. Dit is de veilige, omkeerbare manier.
Kort antwoord: zoek het label van de taak en voer dan uit
launchctl bootout gui/$(id -u)/com.example.label
launchctl disable gui/$(id -u)/com.example.label
De eerste opdracht beëindigt de taak nu. De tweede houdt hem uit na een herstart. launchctl enable draait het terug.
Voordat je begint: kom niet aan iets in /System/Library of aan een label dat begint met com.apple.. Die horen bij macOS. Laat VPN-, back-up-, beveiligings- en drivertools met rust, tenzij je de tool verwijdert.
Stap 1: Zoek de taak
Launch agents en daemons staan in drie mappen die je mag wijzigen:
~/Library/LaunchAgents: je eigen agents. Geen wachtwoord nodig./Library/LaunchAgents: agents voor elke gebruiker. Je hebt een beheerderswachtwoord nodig om het bestand te wijzigen./Library/LaunchDaemons: systeemdaemons, draaien als root. Vereistsudo.
Toon wat er nu geladen is, zonder de eigen taken van Apple:
launchctl list | grep -v com.apple
De kolommen zijn proces-ID (- als hij niet draait), laatste exitstatus en label. Je hebt het label nodig.
Stap 2: Controleer wat hij doet
plutil -p ~/Library/LaunchAgents/com.example.label.plist
ProgramArgumentsofProgram: wat hij uitvoert. Wijst het pad naar een app die je kent? Bestaat die app nog?RunAtLoad: start bij elke inlog.KeepAlive: herstart als hij stopt.StartInterval/StartCalendarInterval: draait volgens een schema.
Wijst het programmapad naar een app die je hebt verwijderd, dan is de taak een restant en kun je hem veilig verwijderen. Is het een updater, dan werkt de app zichzelf niet meer bij als je hem uitschakelt.
Stap 3: Maak een back-up
mkdir -p ~/LaunchAgents-backup
cp ~/Library/LaunchAgents/com.example.label.plist ~/LaunchAgents-backup/
Stap 4: Beëindig hem nu
Voor een agent (in een van beide LaunchAgents-mappen):
launchctl bootout gui/$(id -u)/com.example.label
Voor een daemon in /Library/LaunchDaemons:
sudo launchctl bootout system/com.example.label
Dit laadt de taak uit en beëindigt het proces. Het blijft niet zo na een herstart als de taak RunAtLoad heeft.
Stap 5: Houd hem uit
Kies er een.
Optie A: launchctl disable (aanbevolen)
launchctl disable gui/$(id -u)/com.example.label
Voor een daemon: sudo launchctl disable system/com.example.label.
macOS bewaart het label in zijn eigen lijst met uitgeschakelde taken, dus de taak blijft uit, ook als de app zijn plist opnieuw schrijft. Bekijk de lijst met:
launchctl print-disabled gui/$(id -u)
Optie B: verplaats de plist
mkdir -p ~/Library/LaunchAgents/Disabled
mv ~/Library/LaunchAgents/com.example.label.plist ~/Library/LaunchAgents/Disabled/
launchd leest alleen bestanden direct in de map LaunchAgents, niet in submappen, dus de taak wordt bij de volgende inlog niet geladen. Het bestand is er nog als je het nodig hebt. Maakt de app de plist opnieuw aan, dan komt de taak terug; optie A voorkomt dat.
Optie C: Systeeminstellingen
Veel taken staan ook in Systeeminstellingen › Algemeen › Inlogonderdelen en extensies › Sta toe op achtergrond. De schakelaar daar uitzetten werkt ook, maar één schakelaar kan meerdere taken van dezelfde ontwikkelaar omvatten. Zie wat ‘Sta toe op achtergrond’ betekent.
Stap 6: Controleer of het gelukt is
launchctl list | grep com.example.label
Geen uitvoer betekent dat de taak niet geladen is. Herstart en voer de opdracht nogmaals uit om zeker te zijn.
Terugdraaien
Als je optie A hebt gebruikt:
launchctl enable gui/$(id -u)/com.example.label
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.example.label.plist
Als je optie B hebt gebruikt, zet je het bestand terug en voer je dezelfde bootstrap-regel uit. Gebruik voor daemons sudo en system in plaats van gui/$(id -u).
Oude opdrachten die je online tegenkomt
launchctl unload -w file.plist en launchctl load -w file.plist werken nog, maar Apple noemt ze verouderd. bootout, bootstrap, disable en enable zijn de huidige opdrachten en geven duidelijkere foutmeldingen.
FAQ
Is het veilig om bestanden in LaunchAgents te verwijderen?
Uitschakelen is veiliger dan verwijderen. Een plist verwijderen stopt geen taak die al geladen is, en je bent het bestand kwijt als je het terug wilt. Gebruik launchctl bootout en launchctl disable, of verplaats het bestand naar een back-upmap.
Moet ik launchctl unload -w gebruiken?
Het werkt nog, maar Apple markeert load en unload als verouderd. Gebruik op het huidige macOS launchctl bootout om een taak te beëindigen en launchctl disable om hem uit te houden.
Kan ik launch agents van Apple in /System/Library uitschakelen?
Doe dat niet. Ze horen bij macOS, Systeemintegriteitsbeveiliging (SIP) beschermt de bestanden, en als je ze uitschakelt, kunnen functies zoals iCloud, Spotlight of updates stukgaan.
Hoe draai ik launchctl disable terug?
Voer launchctl enable gui/$(id -u)/<label> uit, daarna launchctl bootstrap gui/$(id -u) met het pad van de plist, of log uit en weer in.
De app heeft zijn launch agent teruggezet. Wat nu?
Gebruik launchctl disable. Dat schakelt het label uit, zodat de taak uit blijft, ook als de app de plist opnieuw schrijft. Zet ook de eigen instelling ‘Start bij inloggen’ van de app uit.