←→ Underneath: Background Apps · Všechny návody pro Mac
Jak na Macu bezpečně vypnout spouštěcí agenty
Nejčastější rada zní: smažte .plist z LaunchAgents. Je to ale také nejhorší způsob: úloha běží dál až do restartu a smazání nejde vrátit. Tady je bezpečný a vratný postup.
Stručná odpověď: najděte štítek úlohy a spusťte
launchctl bootout gui/$(id -u)/com.example.label
launchctl disable gui/$(id -u)/com.example.label
První příkaz ji zastaví hned. Druhý zajistí, že zůstane vypnutá i po restartech. launchctl enable to vrátí.
Než začnete: nesahejte na nic v /System/Library ani na žádný štítek, který začíná na com.apple.. Ty patří macOS. VPN, zálohovací, bezpečnostní nástroje a ovladače nechte na pokoji, pokud daný nástroj neodinstalováváte.
Krok 1: Najděte úlohu
Spouštěcí agenti a démoni jsou ve třech složkách, které smíte měnit:
~/Library/LaunchAgents: vaši vlastní agenti. Heslo není potřeba./Library/LaunchAgents: agenti pro všechny uživatele. Ke změně souboru je potřeba heslo správce./Library/LaunchDaemons: systémoví démoni, běží jako root. Vyžadujesudo.
Vypište, co je teď načtené, bez vlastních úloh Apple:
launchctl list | grep -v com.apple
Sloupce jsou ID procesu (-, pokud neběží), poslední návratový kód a štítek. Potřebujete štítek.
Krok 2: Ověřte, co dělá
plutil -p ~/Library/LaunchAgents/com.example.label.plist
ProgramArgumentsneboProgram: co spouští. Vede cesta k aplikaci, kterou znáte? Existuje ta aplikace ještě?RunAtLoad: spouští se při každém přihlášení.KeepAlive: po zastavení se znovu spustí.StartInterval/StartCalendarInterval: běží podle plánu.
Pokud cesta k programu vede k aplikaci, kterou jste smazali, je úloha pozůstatek a můžete ji bezpečně odstranit. Pokud jde o aktualizátor, po vypnutí se aplikace nebude sama aktualizovat.
Krok 3: Zálohujte ji
mkdir -p ~/LaunchAgents-backup
cp ~/Library/LaunchAgents/com.example.label.plist ~/LaunchAgents-backup/
Krok 4: Zastavte ji hned
Pro agenta (v kterékoli složce LaunchAgents):
launchctl bootout gui/$(id -u)/com.example.label
Pro démona v /Library/LaunchDaemons:
sudo launchctl bootout system/com.example.label
Tím se úloha uvolní a její proces skončí. Restart to nepřežije, pokud má úloha RunAtLoad.
Krok 5: Nechte ji vypnutou
Vyberte jednu možnost.
Možnost A: launchctl disable (doporučeno)
launchctl disable gui/$(id -u)/com.example.label
Pro démona: sudo launchctl disable system/com.example.label.
macOS uloží štítek do vlastního seznamu vypnutých, takže úloha zůstane vypnutá, i když aplikace svůj plist znovu zapíše. Seznam zkontrolujete takto:
launchctl print-disabled gui/$(id -u)
Možnost B: přesuňte plist jinam
mkdir -p ~/Library/LaunchAgents/Disabled
mv ~/Library/LaunchAgents/com.example.label.plist ~/Library/LaunchAgents/Disabled/
launchd čte jen soubory přímo ve složce LaunchAgents, ne v podsložkách, takže se úloha při příštím přihlášení nenačte. Soubor tam pořád je, kdybyste ho potřebovali. Pokud aplikace plist vytvoří znovu, úloha se vrátí; možnost A tomu předejde.
Možnost C: Nastavení systému
Mnoho úloh se zobrazuje také v Nastavení systému › Obecné › Položky otevírané po přihlášení a rozšíření › Povolit na pozadí. Vypnutí přepínače tam funguje také, ale jeden přepínač může zahrnovat několik úloh od stejného vývojáře. Viz co znamená „Povolit na pozadí“.
Krok 6: Ověřte, že to zabralo
launchctl list | grep com.example.label
Žádný výstup znamená, že úloha není načtená. Pro jistotu Mac restartujte a příkaz spusťte znovu.
Vrácení změn
Pokud jste použili možnost A:
launchctl enable gui/$(id -u)/com.example.label
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.example.label.plist
Pokud jste použili možnost B, přesuňte soubor zpět a spusťte stejný řádek s bootstrap. U démonů použijte sudo a system místo gui/$(id -u).
Staré příkazy, na které narazíte na internetu
launchctl unload -w file.plist a launchctl load -w file.plist pořád fungují, ale Apple je označuje jako zastaralé. bootout, bootstrap, disable a enable jsou současné příkazy a mají srozumitelnější chybové zprávy.
FAQ
Je bezpečné mazat soubory v LaunchAgents?
Bezpečnější je vypnout než smazat. Smazání plistu nezastaví úlohu, která je už načtená, a když soubor budete znovu potřebovat, přijdete o něj. Použijte launchctl bootout a launchctl disable, nebo soubor přesuňte do záložní složky.
Mám použít launchctl unload -w?
Pořád funguje, ale Apple označuje load a unload jako zastaralé. V současném macOS použijte launchctl bootout k zastavení úlohy a launchctl disable, aby zůstala vypnutá.
Můžu vypnout spouštěcí agenty Apple v /System/Library?
Nedělejte to. Jsou součástí macOS, soubory chrání System Integrity Protection a jejich vypnutí může rozbít funkce jako iCloud, Spotlight nebo aktualizace.
Jak vrátit launchctl disable?
Spusťte launchctl enable gui/$(id -u)/<label>, potom launchctl bootstrap gui/$(id -u) s cestou k plistu, nebo se odhlaste a znovu přihlaste.
Aplikace vrátila svého spouštěcího agenta. Co teď?
Použijte launchctl disable. Vypne samotný štítek, takže úloha zůstane vypnutá, i když aplikace plist znovu zapíše. Vypněte také vlastní nastavení aplikace „Spouštět po přihlášení“.