←→ 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:
~/Library/LaunchAgents: agenții tăi. Nu e nevoie de parolă./Library/LaunchAgents: agenți pentru toți utilizatorii. Pentru a modifica fișierul e nevoie de parola de administrator./Library/LaunchDaemons: daemoni de sistem, rulează ca root. Necesităsudo.
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
ProgramArgumentssauProgram: ce rulează. Calea duce la o aplicație pe care o cunoști? Mai există acea aplicație?RunAtLoad: pornește la fiecare autentificare.KeepAlive: repornește când se oprește.StartInterval/StartCalendarInterval: rulează după un program.
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”.