←→ 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:

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

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.