←→ Underneath: Background Apps · Wszystkie poradniki dla Maca
Jak bezpiecznie wyłączyć agenty uruchamiania na Macu
Najczęstsza rada to usunąć plik .plist z LaunchAgents. To także najgorszy sposób: zadanie działa dalej aż do ponownego uruchomienia, a usunięcia nie da się cofnąć. Oto bezpieczny i odwracalny sposób.
Krótka odpowiedź: znajdź etykietę zadania, a potem wykonaj
launchctl bootout gui/$(id -u)/com.example.label
launchctl disable gui/$(id -u)/com.example.label
Pierwsze polecenie zatrzymuje je teraz. Drugie sprawia, że pozostaje wyłączone po ponownych uruchomieniach. launchctl enable to cofa.
Zanim zaczniesz: nie ruszaj niczego w /System/Library ani żadnej etykiety zaczynającej się od com.apple.. Należą do macOS. Zostaw w spokoju VPN, narzędzia do kopii zapasowych, zabezpieczeń i sterowniki, chyba że odinstalowujesz dane narzędzie.
Krok 1: Znajdź zadanie
Agenty i demony uruchamiania znajdują się w trzech folderach, które możesz zmieniać:
~/Library/LaunchAgents: Twoje własne agenty. Hasło nie jest potrzebne./Library/LaunchAgents: agenty dla każdego użytkownika. Zmiana pliku wymaga hasła administratora./Library/LaunchDaemons: demony systemowe, działają jako root. Wymagasudo.
Wyświetl to, co jest teraz załadowane, bez zadań samego Apple:
launchctl list | grep -v com.apple
Kolumny to identyfikator procesu (-, jeśli nie działa), ostatni kod wyjścia i etykieta. Potrzebujesz etykiety.
Krok 2: Sprawdź, co robi
plutil -p ~/Library/LaunchAgents/com.example.label.plist
ProgramArgumentslubProgram: co uruchamia. Czy ścieżka prowadzi do znanej Ci aplikacji? Czy ta aplikacja nadal istnieje?RunAtLoad: uruchamia się przy każdym logowaniu.KeepAlive: uruchamia się ponownie, gdy się zatrzyma.StartInterval/StartCalendarInterval: działa według harmonogramu.
Jeśli ścieżka programu prowadzi do aplikacji, którą usunąłeś, zadanie jest pozostałością i można je bezpiecznie usunąć. Jeśli to program aktualizujący, po wyłączeniu aplikacja nie będzie sama się uaktualniać.
Krok 3: Zrób kopię zapasową
mkdir -p ~/LaunchAgents-backup
cp ~/Library/LaunchAgents/com.example.label.plist ~/LaunchAgents-backup/
Krok 4: Zatrzymaj je teraz
Dla agenta (w dowolnym folderze LaunchAgents):
launchctl bootout gui/$(id -u)/com.example.label
Dla demona w /Library/LaunchDaemons:
sudo launchctl bootout system/com.example.label
To wyładowuje zadanie i kończy jego proces. To nie przetrwa ponownego uruchomienia, jeśli zadanie ma RunAtLoad.
Krok 5: Utrzymaj je wyłączone
Wybierz jedną opcję.
Opcja A: launchctl disable (zalecana)
launchctl disable gui/$(id -u)/com.example.label
Dla demona: sudo launchctl disable system/com.example.label.
macOS zapisuje etykietę na własnej liście wyłączonych, więc zadanie pozostaje wyłączone, nawet jeśli aplikacja znowu zapisze swój plik plist. Sprawdź listę poleceniem:
launchctl print-disabled gui/$(id -u)
Opcja B: przenieś plik plist w inne miejsce
mkdir -p ~/Library/LaunchAgents/Disabled
mv ~/Library/LaunchAgents/com.example.label.plist ~/Library/LaunchAgents/Disabled/
launchd czyta tylko pliki leżące bezpośrednio w folderze LaunchAgents, a nie w podfolderach, więc przy następnym logowaniu zadanie się nie załaduje. Plik nadal istnieje, gdyby był Ci potrzebny. Jeśli aplikacja ponownie utworzy plik plist, zadanie wróci; opcja A tego unika.
Opcja C: Ustawienia systemowe
Wiele zadań widać też w Ustawieniach systemowych › Ogólne › Rzeczy otwierane podczas logowania i rozszerzenia › Pozwalaj w tle. Wyłączenie tam przełącznika też działa, ale jeden przełącznik może obejmować kilka zadań tego samego dewelopera. Zobacz, co oznacza „Pozwalaj w tle”.
Krok 6: Sprawdź, czy zadziałało
launchctl list | grep com.example.label
Brak wyniku oznacza, że zadanie nie jest załadowane. Dla pewności uruchom Maca ponownie i wykonaj polecenie jeszcze raz.
Cofanie
Jeśli użyłeś opcji A:
launchctl enable gui/$(id -u)/com.example.label
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.example.label.plist
Jeśli użyłeś opcji B, przenieś plik z powrotem i wykonaj ten sam wiersz z bootstrap. W przypadku demonów użyj sudo i system zamiast gui/$(id -u).
Stare polecenia, które spotkasz w internecie
launchctl unload -w file.plist i launchctl load -w file.plist nadal działają, ale Apple nazywa je przestarzałymi. bootout, bootstrap, disable i enable to aktualne polecenia i dają czytelniejsze komunikaty o błędach.
FAQ
Czy usuwanie plików z LaunchAgents jest bezpieczne?
Bezpieczniej jest wyłączyć niż usunąć. Usunięcie pliku plist nie zatrzymuje już załadowanego zadania, a jeśli plik będzie Ci potrzebny, stracisz go. Użyj launchctl bootout i launchctl disable albo przenieś plik do folderu z kopią zapasową.
Czy używać launchctl unload -w?
Nadal działa, ale Apple oznacza load i unload jako przestarzałe. W aktualnym macOS używaj launchctl bootout, aby zatrzymać zadanie, i launchctl disable, aby pozostało wyłączone.
Czy mogę wyłączyć agenty uruchamiania Apple w /System/Library?
Nie rób tego. Są częścią macOS, pliki chroni System Integrity Protection, a ich wyłączenie może zepsuć funkcje takie jak iCloud, Spotlight czy uaktualnienia.
Jak cofnąć launchctl disable?
Wykonaj launchctl enable gui/$(id -u)/<label>, a potem launchctl bootstrap gui/$(id -u) ze ścieżką do pliku plist albo wyloguj się i zaloguj ponownie.
Aplikacja przywróciła swojego agenta uruchamiania. Co teraz?
Użyj launchctl disable. Wyłącza ono etykietę, więc zadanie pozostaje wyłączone, nawet jeśli aplikacja znowu zapisze plik plist. Wyłącz też własne ustawienie aplikacji „Uruchamiaj podczas logowania”.