←→ Underneath: Background Apps · Toate ghidurile pentru Mac

Cum dezactivezi în siguranță agenții de lansare pe un Mac

Ștergerea unui .plist din LaunchAgents este sfatul pe care îl vezi cel mai des. Este și cea mai proastă metodă: sarcina continuă să ruleze până la repornire și nu poți anula ștergerea. Iată metoda sigură și reversibilă.

Pe scurt: găsește eticheta sarcinii, apoi rulează

launchctl bootout gui/$(id -u)/com.example.label
launchctl disable gui/$(id -u)/com.example.label

Prima comandă o oprește acum. A doua o menține dezactivată după reporniri. launchctl enable anulează acest lucru.

Înainte să începi: nu atinge nimic din /System/Library și nicio etichetă care începe cu com.apple.. Acestea aparțin macOS. Lasă în pace instrumentele VPN, de backup, de securitate și driverele, cu excepția cazului în care dezinstalezi instrumentul.

Pasul 1: Găsește sarcina

Agenții și daemonii de lansare se află în trei dosare pe care le poți modifica:

Listează ce este încărcat acum, fără sarcinile proprii ale Apple:

launchctl list | grep -v com.apple

Coloanele sunt ID-ul procesului (- dacă nu rulează), ultimul cod de ieșire și eticheta. Ai nevoie de etichetă.

Pasul 2: Verifică ce face

plutil -p ~/Library/LaunchAgents/com.example.label.plist

Dacă calea programului duce la o aplicație pe care ai șters-o, sarcina este un rest și poate fi eliminată în siguranță. Dacă este un actualizator, dezactivarea lui înseamnă că aplicația nu se va mai actualiza singură.

Pasul 3: Fă o copie de rezervă

mkdir -p ~/LaunchAgents-backup
cp ~/Library/LaunchAgents/com.example.label.plist ~/LaunchAgents-backup/

Pasul 4: Oprește-o acum

Pentru un agent (din oricare dosar LaunchAgents):

launchctl bootout gui/$(id -u)/com.example.label

Pentru un daemon din /Library/LaunchDaemons:

sudo launchctl bootout system/com.example.label

Aceasta descarcă sarcina și încheie procesul ei. Efectul nu rezistă unei reporniri dacă sarcina are RunAtLoad.

Pasul 5: Menține-o dezactivată

Alege o variantă.

Varianta A: launchctl disable (recomandată)

launchctl disable gui/$(id -u)/com.example.label

Pentru un daemon: sudo launchctl disable system/com.example.label.

macOS salvează eticheta în propria listă de sarcini dezactivate, așa că sarcina rămâne dezactivată chiar dacă aplicația își scrie din nou fișierul plist. Verifică lista cu:

launchctl print-disabled gui/$(id -u)

Varianta B: mută fișierul plist în altă parte

mkdir -p ~/Library/LaunchAgents/Disabled
mv ~/Library/LaunchAgents/com.example.label.plist ~/Library/LaunchAgents/Disabled/

launchd citește doar fișierele aflate direct în dosarul LaunchAgents, nu și în subdosare, așa că sarcina nu se va încărca la următoarea autentificare. Fișierul este încă acolo dacă ai nevoie de el. Dacă aplicația recreează fișierul plist, sarcina revine; varianta A evită asta.

Varianta C: Configurări sistem

Multe sarcini apar și în Configurări sistem › General › Articole de autentificare și extensii › Permite în fundal. Dezactivarea comutatorului de acolo funcționează și ea, dar un comutator poate acoperi mai multe sarcini ale aceluiași dezvoltator. Vezi ce înseamnă „Permite în fundal”.

Pasul 6: Verifică dacă a funcționat

launchctl list | grep com.example.label

Dacă nu apare nimic, sarcina nu este încărcată. Repornește, apoi rulează din nou comanda ca să fii sigur.

Anulare

Dacă ai folosit varianta A:

launchctl enable gui/$(id -u)/com.example.label
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.example.label.plist

Dacă ai folosit varianta B, mută fișierul înapoi și rulează aceeași linie cu bootstrap. Pentru daemoni folosește sudo și system în loc de gui/$(id -u).

Comenzi vechi pe care le vei vedea online

launchctl unload -w file.plist și launchctl load -w file.plist încă funcționează, dar Apple le numește moștenite (legacy). bootout, bootstrap, disable și enable sunt comenzile actuale și dau erori mai clare.

FAQ

Este sigur să șterg fișiere din LaunchAgents?

Este mai sigur să dezactivezi decât să ștergi. Ștergerea unui fișier plist nu oprește o sarcină deja încărcată, iar dacă ai nevoie din nou de fișier, l-ai pierdut. Folosește launchctl bootout și launchctl disable sau mută fișierul într-un dosar de backup.

Ar trebui să folosesc launchctl unload -w?

Încă funcționează, dar Apple marchează load și unload drept moștenite (legacy). Pe macOS actual folosește launchctl bootout pentru a opri o sarcină și launchctl disable pentru a o menține dezactivată.

Pot dezactiva agenții de lansare Apple din /System/Library?

Nu o face. Fac parte din macOS, System Integrity Protection protejează fișierele, iar dezactivarea lor poate strica funcții precum iCloud, Spotlight sau actualizările.

Cum anulez launchctl disable?

Rulează launchctl enable gui/$(id -u)/<label>, apoi launchctl bootstrap gui/$(id -u) cu calea fișierului plist, sau deconectează-te și autentifică-te din nou.

Aplicația și-a pus la loc agentul de lansare. Ce fac acum?

Folosește launchctl disable. Dezactivează eticheta, așa că sarcina rămâne dezactivată chiar dacă aplicația scrie din nou fișierul plist. Dezactivează și configurarea proprie a aplicației „Lansează la autentificare”.