←→ Underneath: Background Apps · Tous les guides Mac
Comment désactiver les agents de lancement sur un Mac sans risque
Supprimer un .plist de LaunchAgents est le conseil que l'on voit le plus souvent. C'est aussi la pire méthode : la tâche continue de tourner jusqu'au redémarrage, et vous ne pouvez pas annuler. Voici la méthode sûre et réversible.
En bref : trouvez le label de la tâche, puis exécutez
launchctl bootout gui/$(id -u)/com.example.label
launchctl disable gui/$(id -u)/com.example.label
La première commande l'arrête tout de suite. La seconde la garde désactivée après les redémarrages. launchctl enable annule l'opération.
Avant de commencer : ne touchez à rien dans /System/Library ni à aucun label qui commence par com.apple.. Ils appartiennent à macOS. Laissez tranquilles les outils de VPN, de sauvegarde, de sécurité et les pilotes, sauf si vous désinstallez l'outil.
Étape 1 : trouver la tâche
Les agents et daemons de lancement se trouvent dans trois dossiers que vous pouvez modifier :
~/Library/LaunchAgents: vos propres agents. Aucun mot de passe nécessaire./Library/LaunchAgents: les agents de tous les utilisateurs. Modifier le fichier exige un mot de passe administrateur./Library/LaunchDaemons: les daemons système, exécutés en root. Exigesudo.
Listez ce qui est chargé en ce moment, sans les tâches d'Apple :
launchctl list | grep -v com.apple
Les colonnes sont l'identifiant de processus (- s'il ne tourne pas), le dernier code de sortie et le label. C'est le label qu'il vous faut.
Étape 2 : vérifier ce qu'elle fait
plutil -p ~/Library/LaunchAgents/com.example.label.plist
ProgramArgumentsouProgram: ce qu'elle exécute. Le chemin pointe-t-il vers une app que vous connaissez ? Cette app existe-t-elle encore ?RunAtLoad: démarre à chaque connexion.KeepAlive: redémarre quand elle s'arrête.StartInterval/StartCalendarInterval: s'exécute selon un calendrier.
Si le chemin du programme pointe vers une app que vous avez supprimée, la tâche est un reste et peut être retirée sans risque. S'il s'agit d'un outil de mise à jour, le désactiver signifie que l'app ne se mettra plus à jour toute seule.
Étape 3 : la sauvegarder
mkdir -p ~/LaunchAgents-backup
cp ~/Library/LaunchAgents/com.example.label.plist ~/LaunchAgents-backup/
Étape 4 : l'arrêter maintenant
Pour un agent (dans l'un ou l'autre dossier LaunchAgents) :
launchctl bootout gui/$(id -u)/com.example.label
Pour un daemon dans /Library/LaunchDaemons :
sudo launchctl bootout system/com.example.label
Cela décharge la tâche et termine son processus. Cela ne résiste pas à un redémarrage si la tâche a RunAtLoad.
Étape 5 : la garder désactivée
Choisissez une option.
Option A : launchctl disable (recommandé)
launchctl disable gui/$(id -u)/com.example.label
Pour un daemon : sudo launchctl disable system/com.example.label.
macOS enregistre le label dans sa propre liste de tâches désactivées : la tâche reste donc désactivée même si l'app réécrit son plist. Consultez la liste avec :
launchctl print-disabled gui/$(id -u)
Option B : déplacer le plist ailleurs
mkdir -p ~/Library/LaunchAgents/Disabled
mv ~/Library/LaunchAgents/com.example.label.plist ~/Library/LaunchAgents/Disabled/
launchd ne lit que les fichiers placés directement dans le dossier LaunchAgents, pas dans ses sous-dossiers : la tâche ne se chargera donc pas à la prochaine connexion. Le fichier reste disponible si vous en avez besoin. Si l'app recrée le plist, la tâche revient ; l'option A évite ce problème.
Option C : Réglages Système
Beaucoup de tâches apparaissent aussi dans Réglages Système › Général › Ouverture et extensions › Autoriser en arrière-plan. Désactiver l'interrupteur à cet endroit fonctionne aussi, mais un seul interrupteur peut couvrir plusieurs tâches du même développeur. Voir ce que signifie « Autoriser en arrière-plan ».
Étape 6 : vérifier que ça a marché
launchctl list | grep com.example.label
Aucune sortie signifie que la tâche n'est pas chargée. Redémarrez, puis relancez la commande pour en être sûr.
Annuler
Si vous avez utilisé l'option A :
launchctl enable gui/$(id -u)/com.example.label
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.example.label.plist
Si vous avez utilisé l'option B, remettez le fichier à sa place et exécutez la même ligne bootstrap. Pour les daemons, utilisez sudo et system au lieu de gui/$(id -u).
Les anciennes commandes que vous verrez en ligne
launchctl unload -w file.plist et launchctl load -w file.plist fonctionnent encore, mais Apple les qualifie d'anciennes (legacy). bootout, bootstrap, disable et enable sont les commandes actuelles et donnent des erreurs plus claires.
FAQ
Est-ce sans risque de supprimer des fichiers dans LaunchAgents ?
Il est plus sûr de désactiver que de supprimer. Supprimer un plist n'arrête pas une tâche déjà chargée, et vous perdez le fichier si vous en avez de nouveau besoin. Utilisez launchctl bootout et launchctl disable, ou déplacez le fichier dans un dossier de sauvegarde.
Faut-il utiliser launchctl unload -w ?
Cela fonctionne encore, mais Apple qualifie load et unload d'anciennes commandes (legacy). Sur un macOS récent, utilisez launchctl bootout pour arrêter une tâche et launchctl disable pour la garder désactivée.
Puis-je désactiver les agents de lancement d'Apple dans /System/Library ?
Ne le faites pas. Ils font partie de macOS, la protection de l'intégrité du système (SIP) protège ces fichiers, et les désactiver peut casser des fonctions comme iCloud, Spotlight ou les mises à jour.
Comment annuler launchctl disable ?
Exécutez launchctl enable gui/$(id -u)/<label>, puis launchctl bootstrap gui/$(id -u) avec le chemin du plist, ou fermez votre session et rouvrez-la.
L'app a remis son agent de lancement. Que faire ?
Utilisez launchctl disable. Cette commande désactive le label : la tâche reste désactivée même si l'app réécrit le plist. Désactivez aussi le réglage « Lancer à la connexion » de l'app elle-même.