←→ Underneath: Background Apps · Tutte le guide per Mac
Come disattivare gli agenti di avvio su un Mac in sicurezza
Eliminare un .plist da LaunchAgents è il consiglio che si vede più spesso. È anche il metodo peggiore: il job continua a funzionare fino al riavvio e non puoi annullare. Ecco il metodo sicuro e reversibile.
In breve: trova l'etichetta (label) del job, poi esegui
launchctl bootout gui/$(id -u)/com.example.label
launchctl disable gui/$(id -u)/com.example.label
Il primo comando lo interrompe subito. Il secondo lo tiene disattivato dopo i riavvii. launchctl enable annulla l'operazione.
Prima di iniziare: non toccare nulla in /System/Library né alcuna etichetta che inizia con com.apple.. Appartengono a macOS. Lascia stare gli strumenti per VPN, backup, sicurezza e i driver, a meno che tu non stia rimuovendo lo strumento.
Passo 1: trova il job
Agenti e daemon di avvio si trovano in tre cartelle che puoi modificare:
~/Library/LaunchAgents: i tuoi agenti. Non serve alcuna password./Library/LaunchAgents: agenti per tutti gli utenti. Per modificare il file serve una password di amministratore./Library/LaunchDaemons: daemon di sistema, eseguiti come root. Servesudo.
Elenca ciò che è caricato ora, senza i job di Apple:
launchctl list | grep -v com.apple
Le colonne sono l'ID del processo (- se non è in esecuzione), l'ultimo stato di uscita e l'etichetta. Ti serve l'etichetta.
Passo 2: verifica cosa fa
plutil -p ~/Library/LaunchAgents/com.example.label.plist
ProgramArgumentsoProgram: cosa esegue. Il percorso punta a un'app che conosci? Quell'app esiste ancora?RunAtLoad: si avvia a ogni login.KeepAlive: si riavvia quando si ferma.StartInterval/StartCalendarInterval: viene eseguito secondo una pianificazione.
Se il percorso del programma punta a un'app che hai eliminato, il job è un residuo e si può rimuovere senza rischi. Se è uno strumento di aggiornamento, disattivarlo significa che l'app non si aggiornerà più da sola.
Passo 3: fai un backup
mkdir -p ~/LaunchAgents-backup
cp ~/Library/LaunchAgents/com.example.label.plist ~/LaunchAgents-backup/
Passo 4: interrompilo ora
Per un agente (in una delle due cartelle LaunchAgents):
launchctl bootout gui/$(id -u)/com.example.label
Per un daemon in /Library/LaunchDaemons:
sudo launchctl bootout system/com.example.label
Questo scarica il job e termina il suo processo. L'effetto non sopravvive a un riavvio se il job ha RunAtLoad.
Passo 5: tienilo disattivato
Scegli un'opzione.
Opzione A: launchctl disable (consigliata)
launchctl disable gui/$(id -u)/com.example.label
Per un daemon: sudo launchctl disable system/com.example.label.
macOS memorizza l'etichetta nel proprio elenco dei job disattivati, quindi il job resta disattivato anche se l'app riscrive il suo plist. Controlla l'elenco con:
launchctl print-disabled gui/$(id -u)
Opzione B: sposta altrove il plist
mkdir -p ~/Library/LaunchAgents/Disabled
mv ~/Library/LaunchAgents/com.example.label.plist ~/Library/LaunchAgents/Disabled/
launchd legge solo i file che si trovano direttamente nella cartella LaunchAgents, non nelle sottocartelle, quindi il job non verrà caricato al prossimo login. Il file resta lì se ti serve. Se l'app ricrea il plist, il job torna; l'opzione A evita questo problema.
Opzione C: Impostazioni di Sistema
Molti job compaiono anche in Impostazioni di Sistema › Generali › Elementi login ed estensioni › Consenti in background. Anche disattivare l'interruttore lì funziona, ma un solo interruttore può coprire più job dello stesso sviluppatore. Vedi cosa significa «Consenti in background».
Passo 6: verifica che abbia funzionato
launchctl list | grep com.example.label
Se non compare nulla, il job non è caricato. Riavvia e ripeti il comando per esserne certo.
Annullare
Se hai usato l'opzione A:
launchctl enable gui/$(id -u)/com.example.label
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.example.label.plist
Se hai usato l'opzione B, rimetti il file al suo posto ed esegui la stessa riga bootstrap. Per i daemon usa sudo e system invece di gui/$(id -u).
Vecchi comandi che troverai online
launchctl unload -w file.plist e launchctl load -w file.plist funzionano ancora, ma Apple li indica come legacy. bootout, bootstrap, disable ed enable sono quelli attuali e danno errori più chiari.
FAQ
È sicuro eliminare i file in LaunchAgents?
È più sicuro disattivare che eliminare. Eliminare un plist non interrompe un job già caricato, e perdi il file se ti serve di nuovo. Usa launchctl bootout e launchctl disable, oppure sposta il file in una cartella di backup.
Devo usare launchctl unload -w?
Funziona ancora, ma Apple indica load e unload come comandi legacy. Sulle versioni attuali di macOS usa launchctl bootout per interrompere un job e launchctl disable per tenerlo disattivato.
Posso disattivare gli agenti di avvio di Apple in /System/Library?
Non farlo. Fanno parte di macOS, la protezione dell'integrità del sistema (SIP) protegge quei file, e disattivarli può compromettere funzioni come iCloud, Spotlight o gli aggiornamenti.
Come annullo launchctl disable?
Esegui launchctl enable gui/$(id -u)/<label>, poi launchctl bootstrap gui/$(id -u) con il percorso del plist, oppure esci e rientra con il login.
L'app ha rimesso il suo agente di avvio. E adesso?
Usa launchctl disable. Disattiva l'etichetta, quindi il job resta disattivato anche se l'app riscrive il plist. Disattiva anche l'impostazione «Avvia al login» dell'app stessa.