Verwijder een agent van de launchd

De overgrote meerderheid van Mac-gebruikers hoeven launchd en launchctl niet handmatig te wijzigen, maar er zijn momenten dat u de installatie ongedaan maakt of stopt met het gebruik van een app in Mac OS X en een serviceagent blijft onnodig laden in launchd. Dit is vervelend, maar deze bedrieglijke agenten zijn eenvoudig te verwijderen via de opdrachtregel, dus start Terminal en we gaan weg. Bovendien zijn er situaties waarin geavanceerde gebruikers de agenten die in launchd zijn geladen misschien om welke reden dan ook willen tweaken. In elk geval zullen we in detail beschrijven hoe items in launchd moeten worden getoond, hoe ze in OS X kunnen worden verwijderd en hoe agenten kunnen worden geladen in launchd op de Mac.

U moet enig begrip en comfort hebben van het gebruik van de opdrachtregel en Terminal om dit op de juiste manier te gebruiken, waardoor dit ideaal is voor meer gevorderde gebruikers die kennis hebben van daemons en hoe ze kunnen worden opgespoord, wat soms slechts een kwestie is om er een te vinden in de Activity Monitor van Mac OS X, of door de launchctl-opdracht te gebruiken die we binnenkort zullen bespreken. Als u besluit de wijziging ongedaan te maken, kunt u de service of daemon ook in de launchd laden met een andere opdracht, waardoor de eerste verwijderingsstap ongedaan wordt gemaakt. Laten we er naar toe gaan:

Launch Agents & Services verwijderen uit launchd in OS X

Hier ziet u hoe u een service uit de launchd verwijdert . Start Terminal en gebruik vervolgens de volgende syntaxis met de opdracht launchctl:

launchctl remove name

Als ik bijvoorbeeld een service met de naam "com.annoying.service" wil verwijderen, is de syntaxis:

launchctl remove com.annoying.service

Mogelijk moet u de opdracht prefixen met sudo om de service te verwijderen, in dit geval zou de opdracht zijn:

sudo launchctl remove com.annoying.service

Met het voorvoegsel sudo moet u een beheerderswachtwoord invoeren voordat de opdracht wordt uitgevoerd.

Hoe te zien wat er in de launchd zit

U kunt ook controleren wat er in launchd is geladen met behulp van de volgende opdrachtreeks:

launchctl list

Met deze opdracht worden alle agents en taken vermeld die in launchd zijn geladen, zodat u eenvoudig de agents kunt manipuleren die worden uitgevoerd. Omdat het heel veel informatie op het scherm in één keer dumpt, wil je het misschien door de meer of minder commando's zoals:

launchctl list |more

Hiermee kun je op de return-toets drukken om langzamer door de lijst te navigeren.

Als u over het algemeen de service kent die u zoekt, kunt u ook "grep" gebruiken om de precieze agentservice te vinden. Laten we 'mdworker' als voorbeeld gebruiken:

launchctl list |grep mdworker

Dit zou alleen de volgende launchagents rapporteren:

- 0 com.apple.mdworker.sizing
- 0 com.apple.mdworker.single
- 0 com.apple.mdworker.shared
- 0 com.apple.mdworker.mail
- 0 com.apple.mdworker.lsb
- 0 com.apple.mdworker.isolation
- 0 com.apple.mdworker.bundles
- 0 com.apple.mdworker.32bit

Voor sommige services kan het dumpen van de lijst ook de PID (proces-ID) van de actieve service tonen.

Een agent opnieuw in de launch laden

Als u besluit dat u een service opnieuw wilt starten en opnieuw wilt laden in de launchd, gebruikt u de vlag 'laden' als volgt:

launchctl load com.example.service.to.load

Sommige agents worden meteen geladen zonder problemen. Voor anderen moet u mogelijk de Mac opnieuw opstarten voordat de geladen service weer functioneert zoals deze is bedoeld, maar soms is uitloggen en opnieuw aanmelden ook voldoende.